Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Take a sword to the hashes crate #2708

Closed
15 changes: 15 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -238,3 +238,18 @@ jobs:
with:
kani-version: '0.48.0'
args: '--only-codegen'

API:
name: Check for changes to the public API
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@nightly
- name: Install cargo-public-api
run: cargo install --locked cargo-public-api
- name: Running API checker script
run: ./contrib/check-for-api-changes.sh
5 changes: 5 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,11 @@ Use of `unsafe` code is prohibited unless there is a unanimous decision among
library maintainers on the exclusion from this rule. In such cases there is a
requirement to test unsafe code with sanitizers including Miri.

### API changes

All PRs that change the public API of `rust-bitcoin` must include a patch to
the `api/` text files. This should be a separate, final patch to the PR
that is the diff created by running `./contrib/check-for-api-changes.sh`.

### Policy

Expand Down
11 changes: 11 additions & 0 deletions api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
API text files
==============

Each file here lists the public API when built with some set of features
enabled. To create these files run `../contrib/check-for-api-changes.sh`:

Requires `cargo-public-api`, install with:

`cargo +stable install cargo-public-api --locked`.

ref: https://github.com/enselic/cargo-public-api
10,544 changes: 10,544 additions & 0 deletions api/bitcoin/all-features.txt

Large diffs are not rendered by default.

10,000 changes: 10,000 additions & 0 deletions api/bitcoin/default-features.txt

Large diffs are not rendered by default.

9,065 changes: 9,065 additions & 0 deletions api/bitcoin/no-features.txt

Large diffs are not rendered by default.

1,014 changes: 1,014 additions & 0 deletions api/hashes/all-features.txt

Large diffs are not rendered by default.

855 changes: 855 additions & 0 deletions api/hashes/alloc-only.txt

Large diffs are not rendered by default.

855 changes: 855 additions & 0 deletions api/hashes/no-features.txt

Large diffs are not rendered by default.

143 changes: 143 additions & 0 deletions api/io/all-features.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
impl !core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Error
impl !core::panic::unwind_safe::UnwindSafe for bitcoin_io::Error
impl bitcoin_io::BufRead for &[u8]
impl bitcoin_io::Error
impl bitcoin_io::Read for &[u8]
impl bitcoin_io::Write for alloc::vec::Vec<u8>
impl bitcoin_io::Write for bitcoin_io::Sink
impl core::clone::Clone for bitcoin_io::ErrorKind
impl core::cmp::Eq for bitcoin_io::ErrorKind
impl core::cmp::PartialEq for bitcoin_io::ErrorKind
impl core::convert::From<bitcoin_io::Error> for std::io::error::Error
impl core::convert::From<bitcoin_io::ErrorKind> for bitcoin_io::Error
impl core::convert::From<core::convert::Infallible> for bitcoin_io::ErrorKind
impl core::convert::From<std::io::error::Error> for bitcoin_io::Error
impl core::error::Error for bitcoin_io::Error
impl core::fmt::Debug for bitcoin_io::Error
impl core::fmt::Debug for bitcoin_io::ErrorKind
impl core::fmt::Display for bitcoin_io::Error
impl core::hash::Hash for bitcoin_io::ErrorKind
impl core::marker::Copy for bitcoin_io::ErrorKind
impl core::marker::Freeze for bitcoin_io::Error
impl core::marker::Freeze for bitcoin_io::ErrorKind
impl core::marker::Freeze for bitcoin_io::Sink
impl core::marker::Send for bitcoin_io::Error
impl core::marker::Send for bitcoin_io::ErrorKind
impl core::marker::Send for bitcoin_io::Sink
impl core::marker::StructuralPartialEq for bitcoin_io::ErrorKind
impl core::marker::Sync for bitcoin_io::Error
impl core::marker::Sync for bitcoin_io::ErrorKind
impl core::marker::Sync for bitcoin_io::Sink
impl core::marker::Unpin for bitcoin_io::Error
impl core::marker::Unpin for bitcoin_io::ErrorKind
impl core::marker::Unpin for bitcoin_io::Sink
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::ErrorKind
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Sink
impl core::panic::unwind_safe::UnwindSafe for bitcoin_io::ErrorKind
impl core::panic::unwind_safe::UnwindSafe for bitcoin_io::Sink
impl std::io::Write for bitcoin_io::Sink
impl<'a, R: bitcoin_io::BufRead + core::marker::Sized> bitcoin_io::BufRead for bitcoin_io::Take<'a, R>
impl<'a, R: bitcoin_io::Read + core::marker::Sized> bitcoin_io::Read for bitcoin_io::Take<'a, R>
impl<'a, R: bitcoin_io::Read + core::marker::Sized> bitcoin_io::Take<'a, R>
impl<'a, R> !core::panic::unwind_safe::UnwindSafe for bitcoin_io::Take<'a, R>
impl<'a, R> core::marker::Freeze for bitcoin_io::Take<'a, R> where R: core::marker::Sized
impl<'a, R> core::marker::Send for bitcoin_io::Take<'a, R> where R: core::marker::Send + core::marker::Sized
impl<'a, R> core::marker::Sync for bitcoin_io::Take<'a, R> where R: core::marker::Sync + core::marker::Sized
impl<'a, R> core::marker::Unpin for bitcoin_io::Take<'a, R> where R: core::marker::Sized
impl<'a, R> core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Take<'a, R> where R: core::panic::unwind_safe::RefUnwindSafe + core::marker::Sized
impl<'a> bitcoin_io::Write for &'a mut [u8]
impl<R: std::io::Read> bitcoin_io::BufRead for std::io::buffered::bufreader::BufReader<R>
impl<R: std::io::Read> bitcoin_io::Read for std::io::buffered::bufreader::BufReader<R>
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::BufRead for bitcoin_io::Cursor<T>
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::Cursor<T>
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::Read for bitcoin_io::Cursor<T>
impl<T> core::marker::Freeze for bitcoin_io::Cursor<T> where T: core::marker::Freeze
impl<T> core::marker::Send for bitcoin_io::Cursor<T> where T: core::marker::Send
impl<T> core::marker::Sync for bitcoin_io::Cursor<T> where T: core::marker::Sync
impl<T> core::marker::Unpin for bitcoin_io::Cursor<T> where T: core::marker::Unpin
impl<T> core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Cursor<T> where T: core::panic::unwind_safe::RefUnwindSafe
impl<T> core::panic::unwind_safe::UnwindSafe for bitcoin_io::Cursor<T> where T: core::panic::unwind_safe::UnwindSafe
impl<W: std::io::Write> bitcoin_io::Write for std::io::buffered::bufwriter::BufWriter<W>
pub bitcoin_io::ErrorKind::AddrInUse
pub bitcoin_io::ErrorKind::AddrNotAvailable
pub bitcoin_io::ErrorKind::AlreadyExists
pub bitcoin_io::ErrorKind::BrokenPipe
pub bitcoin_io::ErrorKind::ConnectionAborted
pub bitcoin_io::ErrorKind::ConnectionRefused
pub bitcoin_io::ErrorKind::ConnectionReset
pub bitcoin_io::ErrorKind::Interrupted
pub bitcoin_io::ErrorKind::InvalidData
pub bitcoin_io::ErrorKind::InvalidInput
pub bitcoin_io::ErrorKind::NotConnected
pub bitcoin_io::ErrorKind::NotFound
pub bitcoin_io::ErrorKind::Other
pub bitcoin_io::ErrorKind::PermissionDenied
pub bitcoin_io::ErrorKind::TimedOut
pub bitcoin_io::ErrorKind::UnexpectedEof
pub bitcoin_io::ErrorKind::WouldBlock
pub bitcoin_io::ErrorKind::WriteZero
pub enum bitcoin_io::ErrorKind
pub fn &'a mut [u8]::flush(&mut self) -> bitcoin_io::Result<()>
pub fn &'a mut [u8]::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn &[u8]::consume(&mut self, amount: usize)
pub fn &[u8]::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn &[u8]::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn alloc::vec::Vec<u8>::flush(&mut self) -> bitcoin_io::Result<()>
pub fn alloc::vec::Vec<u8>::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::BufRead::consume(&mut self, amount: usize)
pub fn bitcoin_io::BufRead::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Cursor<T>::consume(&mut self, amount: usize)
pub fn bitcoin_io::Cursor<T>::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Cursor<T>::into_inner(self) -> T
pub fn bitcoin_io::Cursor<T>::new(inner: T) -> Self
pub fn bitcoin_io::Cursor<T>::position(&self) -> u64
pub fn bitcoin_io::Cursor<T>::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Error::cause(&self) -> core::option::Option<&dyn core::error::Error>
pub fn bitcoin_io::Error::description(&self) -> &str
pub fn bitcoin_io::Error::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_io::Error::fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> core::result::Result<(), core::fmt::Error>
pub fn bitcoin_io::Error::from(kind: bitcoin_io::ErrorKind) -> bitcoin_io::Error
pub fn bitcoin_io::Error::from(o: std::io::error::Error) -> bitcoin_io::Error
pub fn bitcoin_io::Error::get_ref(&self) -> core::option::Option<&(dyn core::error::Error + core::marker::Send + core::marker::Sync + 'static)>
pub fn bitcoin_io::Error::kind(&self) -> bitcoin_io::ErrorKind
pub fn bitcoin_io::Error::new<E>(kind: bitcoin_io::ErrorKind, error: E) -> bitcoin_io::Error where E: core::convert::Into<alloc::boxed::Box<(dyn core::error::Error + core::marker::Send + core::marker::Sync + 'static)>>
pub fn bitcoin_io::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
pub fn bitcoin_io::ErrorKind::clone(&self) -> bitcoin_io::ErrorKind
pub fn bitcoin_io::ErrorKind::eq(&self, other: &bitcoin_io::ErrorKind) -> bool
pub fn bitcoin_io::ErrorKind::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_io::ErrorKind::from(never: core::convert::Infallible) -> Self
pub fn bitcoin_io::ErrorKind::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
pub fn bitcoin_io::Read::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Read::read_exact(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Read::read_to_limit(&mut self, buf: &mut alloc::vec::Vec<u8>, limit: u64) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Read::take(&mut self, limit: u64) -> bitcoin_io::Take<'_, Self>
pub fn bitcoin_io::Sink::flush(&mut self) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Sink::flush(&mut self) -> std::io::error::Result<()>
pub fn bitcoin_io::Sink::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Sink::write(&mut self, buf: &[u8]) -> std::io::error::Result<usize>
pub fn bitcoin_io::Sink::write_all(&mut self, &[u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Sink::write_all(&mut self, &[u8]) -> std::io::error::Result<()>
pub fn bitcoin_io::Take<'a, R>::consume(&mut self, amount: usize)
pub fn bitcoin_io::Take<'a, R>::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Take<'a, R>::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Take<'a, R>::read_to_end(&mut self, buf: &mut alloc::vec::Vec<u8>) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Write::flush(&mut self) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Write::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Write::write_all(&mut self, buf: &[u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::sink() -> bitcoin_io::Sink
pub fn std::io::buffered::bufreader::BufReader<R>::consume(&mut self, amount: usize)
pub fn std::io::buffered::bufreader::BufReader<R>::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn std::io::buffered::bufreader::BufReader<R>::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn std::io::buffered::bufwriter::BufWriter<W>::flush(&mut self) -> bitcoin_io::Result<()>
pub fn std::io::buffered::bufwriter::BufWriter<W>::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn std::io::error::Error::from(o: bitcoin_io::Error) -> std::io::error::Error
pub macro bitcoin_io::impl_write!
pub mod bitcoin_io
pub struct bitcoin_io::Cursor<T>
pub struct bitcoin_io::Error
pub struct bitcoin_io::Sink
pub struct bitcoin_io::Take<'a, R: bitcoin_io::Read + core::marker::Sized>
pub trait bitcoin_io::BufRead: bitcoin_io::Read
pub trait bitcoin_io::Read
pub trait bitcoin_io::Write
pub type bitcoin_io::Result<T> = core::result::Result<T, bitcoin_io::Error>
123 changes: 123 additions & 0 deletions api/io/alloc-only.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
impl !core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Error
impl !core::panic::unwind_safe::UnwindSafe for bitcoin_io::Error
impl bitcoin_io::BufRead for &[u8]
impl bitcoin_io::Error
impl bitcoin_io::Read for &[u8]
impl bitcoin_io::Write for alloc::vec::Vec<u8>
impl bitcoin_io::Write for bitcoin_io::Sink
impl core::clone::Clone for bitcoin_io::ErrorKind
impl core::cmp::Eq for bitcoin_io::ErrorKind
impl core::cmp::PartialEq for bitcoin_io::ErrorKind
impl core::convert::From<bitcoin_io::ErrorKind> for bitcoin_io::Error
impl core::convert::From<core::convert::Infallible> for bitcoin_io::ErrorKind
impl core::fmt::Debug for bitcoin_io::Error
impl core::fmt::Debug for bitcoin_io::ErrorKind
impl core::fmt::Display for bitcoin_io::Error
impl core::hash::Hash for bitcoin_io::ErrorKind
impl core::marker::Copy for bitcoin_io::ErrorKind
impl core::marker::Freeze for bitcoin_io::Error
impl core::marker::Freeze for bitcoin_io::ErrorKind
impl core::marker::Freeze for bitcoin_io::Sink
impl core::marker::Send for bitcoin_io::Error
impl core::marker::Send for bitcoin_io::ErrorKind
impl core::marker::Send for bitcoin_io::Sink
impl core::marker::StructuralPartialEq for bitcoin_io::ErrorKind
impl core::marker::Sync for bitcoin_io::Error
impl core::marker::Sync for bitcoin_io::ErrorKind
impl core::marker::Sync for bitcoin_io::Sink
impl core::marker::Unpin for bitcoin_io::Error
impl core::marker::Unpin for bitcoin_io::ErrorKind
impl core::marker::Unpin for bitcoin_io::Sink
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::ErrorKind
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Sink
impl core::panic::unwind_safe::UnwindSafe for bitcoin_io::ErrorKind
impl core::panic::unwind_safe::UnwindSafe for bitcoin_io::Sink
impl<'a, R: bitcoin_io::BufRead + core::marker::Sized> bitcoin_io::BufRead for bitcoin_io::Take<'a, R>
impl<'a, R: bitcoin_io::Read + core::marker::Sized> bitcoin_io::Read for bitcoin_io::Take<'a, R>
impl<'a, R: bitcoin_io::Read + core::marker::Sized> bitcoin_io::Take<'a, R>
impl<'a, R> !core::panic::unwind_safe::UnwindSafe for bitcoin_io::Take<'a, R>
impl<'a, R> core::marker::Freeze for bitcoin_io::Take<'a, R> where R: core::marker::Sized
impl<'a, R> core::marker::Send for bitcoin_io::Take<'a, R> where R: core::marker::Send + core::marker::Sized
impl<'a, R> core::marker::Sync for bitcoin_io::Take<'a, R> where R: core::marker::Sync + core::marker::Sized
impl<'a, R> core::marker::Unpin for bitcoin_io::Take<'a, R> where R: core::marker::Sized
impl<'a, R> core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Take<'a, R> where R: core::panic::unwind_safe::RefUnwindSafe + core::marker::Sized
impl<'a> bitcoin_io::Write for &'a mut [u8]
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::BufRead for bitcoin_io::Cursor<T>
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::Cursor<T>
impl<T: core::convert::AsRef<[u8]>> bitcoin_io::Read for bitcoin_io::Cursor<T>
impl<T> core::marker::Freeze for bitcoin_io::Cursor<T> where T: core::marker::Freeze
impl<T> core::marker::Send for bitcoin_io::Cursor<T> where T: core::marker::Send
impl<T> core::marker::Sync for bitcoin_io::Cursor<T> where T: core::marker::Sync
impl<T> core::marker::Unpin for bitcoin_io::Cursor<T> where T: core::marker::Unpin
impl<T> core::panic::unwind_safe::RefUnwindSafe for bitcoin_io::Cursor<T> where T: core::panic::unwind_safe::RefUnwindSafe
impl<T> core::panic::unwind_safe::UnwindSafe for bitcoin_io::Cursor<T> where T: core::panic::unwind_safe::UnwindSafe
pub bitcoin_io::ErrorKind::AddrInUse
pub bitcoin_io::ErrorKind::AddrNotAvailable
pub bitcoin_io::ErrorKind::AlreadyExists
pub bitcoin_io::ErrorKind::BrokenPipe
pub bitcoin_io::ErrorKind::ConnectionAborted
pub bitcoin_io::ErrorKind::ConnectionRefused
pub bitcoin_io::ErrorKind::ConnectionReset
pub bitcoin_io::ErrorKind::Interrupted
pub bitcoin_io::ErrorKind::InvalidData
pub bitcoin_io::ErrorKind::InvalidInput
pub bitcoin_io::ErrorKind::NotConnected
pub bitcoin_io::ErrorKind::NotFound
pub bitcoin_io::ErrorKind::Other
pub bitcoin_io::ErrorKind::PermissionDenied
pub bitcoin_io::ErrorKind::TimedOut
pub bitcoin_io::ErrorKind::UnexpectedEof
pub bitcoin_io::ErrorKind::WouldBlock
pub bitcoin_io::ErrorKind::WriteZero
pub enum bitcoin_io::ErrorKind
pub fn &'a mut [u8]::flush(&mut self) -> bitcoin_io::Result<()>
pub fn &'a mut [u8]::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn &[u8]::consume(&mut self, amount: usize)
pub fn &[u8]::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn &[u8]::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn alloc::vec::Vec<u8>::flush(&mut self) -> bitcoin_io::Result<()>
pub fn alloc::vec::Vec<u8>::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::BufRead::consume(&mut self, amount: usize)
pub fn bitcoin_io::BufRead::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Cursor<T>::consume(&mut self, amount: usize)
pub fn bitcoin_io::Cursor<T>::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Cursor<T>::into_inner(self) -> T
pub fn bitcoin_io::Cursor<T>::new(inner: T) -> Self
pub fn bitcoin_io::Cursor<T>::position(&self) -> u64
pub fn bitcoin_io::Cursor<T>::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Error::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_io::Error::fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> core::result::Result<(), core::fmt::Error>
pub fn bitcoin_io::Error::from(kind: bitcoin_io::ErrorKind) -> bitcoin_io::Error
pub fn bitcoin_io::Error::get_ref(&self) -> core::option::Option<&(dyn core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static)>
pub fn bitcoin_io::Error::kind(&self) -> bitcoin_io::ErrorKind
pub fn bitcoin_io::Error::new<E: sealed::IntoBoxDynDebug>(kind: bitcoin_io::ErrorKind, error: E) -> bitcoin_io::Error
pub fn bitcoin_io::ErrorKind::clone(&self) -> bitcoin_io::ErrorKind
pub fn bitcoin_io::ErrorKind::eq(&self, other: &bitcoin_io::ErrorKind) -> bool
pub fn bitcoin_io::ErrorKind::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_io::ErrorKind::from(never: core::convert::Infallible) -> Self
pub fn bitcoin_io::ErrorKind::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
pub fn bitcoin_io::Read::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Read::read_exact(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Read::read_to_limit(&mut self, buf: &mut alloc::vec::Vec<u8>, limit: u64) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Read::take(&mut self, limit: u64) -> bitcoin_io::Take<'_, Self>
pub fn bitcoin_io::Sink::flush(&mut self) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Sink::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Sink::write_all(&mut self, &[u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Take<'a, R>::consume(&mut self, amount: usize)
pub fn bitcoin_io::Take<'a, R>::fill_buf(&mut self) -> bitcoin_io::Result<&[u8]>
pub fn bitcoin_io::Take<'a, R>::read(&mut self, buf: &mut [u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Take<'a, R>::read_to_end(&mut self, buf: &mut alloc::vec::Vec<u8>) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Write::flush(&mut self) -> bitcoin_io::Result<()>
pub fn bitcoin_io::Write::write(&mut self, buf: &[u8]) -> bitcoin_io::Result<usize>
pub fn bitcoin_io::Write::write_all(&mut self, buf: &[u8]) -> bitcoin_io::Result<()>
pub fn bitcoin_io::sink() -> bitcoin_io::Sink
pub macro bitcoin_io::impl_write!
pub mod bitcoin_io
pub struct bitcoin_io::Cursor<T>
pub struct bitcoin_io::Error
pub struct bitcoin_io::Sink
pub struct bitcoin_io::Take<'a, R: bitcoin_io::Read + core::marker::Sized>
pub trait bitcoin_io::BufRead: bitcoin_io::Read
pub trait bitcoin_io::Read
pub trait bitcoin_io::Write
pub type bitcoin_io::Result<T> = core::result::Result<T, bitcoin_io::Error>