Merge rust-bitcoin/rust-bitcoin#6730: primitives: Remove `BlockHashDecoder` from `transaction` module
What changed, and why it matters
This change is a routine cleanup of the library's public API. It removes two items (BlockHashDecoder and BlockHashDecoderError) that were accidentally re-exported from the wrong module. The actual decoder and error type still exist in the correct block module, so no functionality is removed. There is no security issue here.
No security action needed. Treat as a normal API-breaking cleanup; downstream users importing these types from the transaction module will need to update their imports to the block module.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit removes re-exports of BlockHashDecoder and BlockHashDecoderError from primitives::transaction and bitcoin::blockdata::transaction. These types conceptually belong to the block module and were already available there. The change is purely an API surface cleanup; it does not alter any decoding logic, memory handling, or behavior. API snapshot files and an internal test import list are updated accordingly.
Changed components
primitives/src/transaction.rsbitcoin/src/blockdata/transaction.rsprimitives/api/*.txtprimitives/tests/api.rsInspect captured patch +3 / −263
### bitcoin/src/blockdata/transaction.rs
@@ -30,11 +30,9 @@ use crate::witness::Witness;
use crate::{internal_macros, Amount, FeeRate, Sequence, SignedAmount, ToU64};
#[rustfmt::skip] // Keep public re-exports separate.
-#[doc(no_inline)]
-pub use primitives::transaction::BlockHashDecoderError;
#[doc(inline)]
pub use primitives::transaction::{
- BlockHashDecoder, Ntxid, OutPoint, OutPointDecoder, OutPointEncoder, Transaction,
+ Ntxid, OutPoint, OutPointDecoder, OutPointEncoder, Transaction,
TransactionDecoder, TransactionEncoder, TxIn, TxInDecoder, TxInEncoder, TxOut, TxOutDecoder,
TxOutEncoder, Txid, Version, VersionDecoder, VersionEncoder, Wtxid,
};
### primitives/api/all-features.txt
@@ -4578,96 +4578,6 @@ impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::P
pub unsafe fn bitcoin_primitives::transaction::error::ParseOutPointError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::ParseOutPointError where T: core::clone::Clone]
impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::ParseOutPointError
pub fn bitcoin_primitives::transaction::error::ParseOutPointError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::ParseOutPointError]
-pub struct bitcoin_primitives::transaction::BlockHashDecoder(_)
-impl bitcoin_primitives::block::BlockHashDecoder
-pub const fn bitcoin_primitives::block::BlockHashDecoder::new() -> Self
-impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = bitcoin_primitives::block::BlockHashDecoderError [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub type bitcoin_primitives::block::BlockHashDecoder::Output = bitcoin_primitives::BlockHash [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::end(self) -> core::result::Result<Self::Output, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::push_bytes(&mut self, bytes: &mut &[u8]) -> core::result::Result<bitcoin_consensus_encoding::decode::DecoderStatus, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::read_limit(&self) -> usize [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::clone(&self) -> bitcoin_primitives::block::BlockHashDecoder [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder]
-impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::default() -> Self [impl: impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder]
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoder::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
-impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone
- pub type bitcoin_primitives::block::BlockHashDecoder::Owned = T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoder::clone_into(&self, target: &mut T) [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoder::to_owned(&self) -> T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoder::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder]
-pub struct bitcoin_primitives::transaction::BlockHashDecoderError(_)
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::clone(&self) -> bitcoin_primitives::block::BlockHashDecoderError [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::cmp::Eq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::eq(&self, other: &bitcoin_primitives::block::BlockHashDecoderError) -> bool [impl: impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(never: core::convert::Infallible) -> Self [impl: impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::error::Error for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> [impl: impl core::error::Error for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::marker::StructuralPartialEq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoderError::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
-impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone
- pub type bitcoin_primitives::block::BlockHashDecoderError::Owned = T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::clone_into(&self, target: &mut T) [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::to_owned(&self) -> T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
-impl<T> alloc::string::ToString for bitcoin_primitives::block::BlockHashDecoderError where T: core::fmt::Display + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::to_string(&self) -> alloc::string::String [impl: impl<T> alloc::string::ToString for bitcoin_primitives::block::BlockHashDecoderError where T: core::fmt::Display + ?core::marker::Sized]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoderError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError]
pub struct bitcoin_primitives::transaction::Ntxid(_)
impl bitcoin_primitives::transaction::Ntxid
pub const fn bitcoin_primitives::transaction::Ntxid::as_byte_array(&self) -> &[u8; 32]
### primitives/api/alloc-only.txt
@@ -4255,94 +4255,6 @@ impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::V
pub unsafe fn bitcoin_primitives::transaction::error::VersionDecoderError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::VersionDecoderError where T: core::clone::Clone]
impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::VersionDecoderError
pub fn bitcoin_primitives::transaction::error::VersionDecoderError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::VersionDecoderError]
-pub struct bitcoin_primitives::transaction::BlockHashDecoder(_)
-impl bitcoin_primitives::block::BlockHashDecoder
-pub const fn bitcoin_primitives::block::BlockHashDecoder::new() -> Self
-impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = bitcoin_primitives::block::BlockHashDecoderError [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub type bitcoin_primitives::block::BlockHashDecoder::Output = bitcoin_primitives::BlockHash [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::end(self) -> core::result::Result<Self::Output, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::push_bytes(&mut self, bytes: &mut &[u8]) -> core::result::Result<bitcoin_consensus_encoding::decode::DecoderStatus, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::read_limit(&self) -> usize [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::clone(&self) -> bitcoin_primitives::block::BlockHashDecoder [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder]
-impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::default() -> Self [impl: impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder]
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoder::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
-impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone
- pub type bitcoin_primitives::block::BlockHashDecoder::Owned = T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoder::clone_into(&self, target: &mut T) [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoder::to_owned(&self) -> T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoder::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder]
-pub struct bitcoin_primitives::transaction::BlockHashDecoderError(_)
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::clone(&self) -> bitcoin_primitives::block::BlockHashDecoderError [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::cmp::Eq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::eq(&self, other: &bitcoin_primitives::block::BlockHashDecoderError) -> bool [impl: impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(never: core::convert::Infallible) -> Self [impl: impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::marker::StructuralPartialEq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoderError::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
-impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone
- pub type bitcoin_primitives::block::BlockHashDecoderError::Owned = T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::clone_into(&self, target: &mut T) [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::to_owned(&self) -> T [impl: impl<T> alloc::borrow::ToOwned for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
-impl<T> alloc::string::ToString for bitcoin_primitives::block::BlockHashDecoderError where T: core::fmt::Display + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::to_string(&self) -> alloc::string::String [impl: impl<T> alloc::string::ToString for bitcoin_primitives::block::BlockHashDecoderError where T: core::fmt::Display + ?core::marker::Sized]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoderError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError]
pub struct bitcoin_primitives::transaction::Ntxid(_)
impl bitcoin_primitives::transaction::Ntxid
pub const fn bitcoin_primitives::transaction::Ntxid::as_byte_array(&self) -> &[u8; 32]
### primitives/api/no-features.txt
@@ -1333,84 +1333,6 @@ impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::V
pub unsafe fn bitcoin_primitives::transaction::error::VersionDecoderError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::transaction::error::VersionDecoderError where T: core::clone::Clone]
impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::VersionDecoderError
pub fn bitcoin_primitives::transaction::error::VersionDecoderError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::transaction::error::VersionDecoderError]
-pub struct bitcoin_primitives::transaction::BlockHashDecoder(_)
-impl bitcoin_primitives::block::BlockHashDecoder
-pub const fn bitcoin_primitives::block::BlockHashDecoder::new() -> Self
-impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = bitcoin_primitives::block::BlockHashDecoderError [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub type bitcoin_primitives::block::BlockHashDecoder::Output = bitcoin_primitives::BlockHash [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::end(self) -> core::result::Result<Self::Output, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::push_bytes(&mut self, bytes: &mut &[u8]) -> core::result::Result<bitcoin_consensus_encoding::decode::DecoderStatus, Self::Error> [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
- pub fn bitcoin_primitives::block::BlockHashDecoder::read_limit(&self) -> usize [impl: impl bitcoin_consensus_encoding::decode::Decoder for bitcoin_primitives::block::BlockHashDecoder]
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::clone(&self) -> bitcoin_primitives::block::BlockHashDecoder [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoder]
-impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::default() -> Self [impl: impl core::default::Default for bitcoin_primitives::block::BlockHashDecoder]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoder]
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoder
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoder::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoder::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoder::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoder where U: core::convert::TryFrom<T>]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoder where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoder::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoder where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoder::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoder where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder
- pub fn bitcoin_primitives::block::BlockHashDecoder::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoder]
-pub struct bitcoin_primitives::transaction::BlockHashDecoderError(_)
-impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::clone(&self) -> bitcoin_primitives::block::BlockHashDecoderError [impl: impl core::clone::Clone for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::cmp::Eq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::eq(&self, other: &bitcoin_primitives::block::BlockHashDecoderError) -> bool [impl: impl core::cmp::PartialEq for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(never: core::convert::Infallible) -> Self [impl: impl core::convert::From<core::convert::Infallible> for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Debug for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result [impl: impl core::fmt::Display for bitcoin_primitives::block::BlockHashDecoderError]
-impl core::marker::StructuralPartialEq for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Freeze for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Send for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Sync for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::Unpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::marker::UnsafeUnpin for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::RefUnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl core::panic::unwind_safe::UnwindSafe for bitcoin_primitives::block::BlockHashDecoderError
-impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>
- pub fn bitcoin_primitives::block::BlockHashDecoderError::into(self) -> U [impl: impl<T, U> core::convert::Into<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::From<T>]
-impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = core::convert::Infallible [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error> [impl: impl<T, U> core::convert::TryFrom<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::Into<T>]
-impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>
- pub type bitcoin_primitives::block::BlockHashDecoderError::Error = <U as core::convert::TryFrom<T>>::Error [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
- pub fn bitcoin_primitives::block::BlockHashDecoderError::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error> [impl: impl<T, U> core::convert::TryInto<U> for bitcoin_primitives::block::BlockHashDecoderError where U: core::convert::TryFrom<T>]
-impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::type_id(&self) -> core::any::TypeId [impl: impl<T> core::any::Any for bitcoin_primitives::block::BlockHashDecoderError where T: 'static + ?core::marker::Sized]
-impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow(&self) -> &T [impl: impl<T> core::borrow::Borrow<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized
- pub fn bitcoin_primitives::block::BlockHashDecoderError::borrow_mut(&mut self) -> &mut T [impl: impl<T> core::borrow::BorrowMut<T> for bitcoin_primitives::block::BlockHashDecoderError where T: ?core::marker::Sized]
-impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone
- pub unsafe fn bitcoin_primitives::block::BlockHashDecoderError::clone_to_uninit(&self, dest: *mut u8) [impl: impl<T> core::clone::CloneToUninit for bitcoin_primitives::block::BlockHashDecoderError where T: core::clone::Clone]
-impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError
- pub fn bitcoin_primitives::block::BlockHashDecoderError::from(t: T) -> T [impl: impl<T> core::convert::From<T> for bitcoin_primitives::block::BlockHashDecoderError]
pub struct bitcoin_primitives::transaction::Ntxid(_)
impl bitcoin_primitives::transaction::Ntxid
pub const fn bitcoin_primitives::transaction::Ntxid::as_byte_array(&self) -> &[u8; 32]
### primitives/src/transaction.rs
@@ -64,10 +64,8 @@ pub use self::error::{OutPointDecoderError, VersionDecoderError};
#[cfg(feature = "alloc")]
#[doc(no_inline)]
pub use self::error::{TransactionDecoderError, TxInDecoderError, TxOutDecoderError};
-#[doc(no_inline)]
-pub use crate::hash_types::BlockHashDecoderError;
#[doc(inline)]
-pub use crate::hash_types::{BlockHashDecoder, Ntxid, Txid, Wtxid};
+pub use crate::hash_types::{Ntxid, Txid, Wtxid};
/// Bitcoin transaction.
///
### primitives/tests/api.rs
@@ -730,7 +730,7 @@ fn p_consistent_exports_transaction() {
TxOutDecoderError as _, VersionDecoderError as _,
};
use bitcoin_primitives::transaction::{
- BlockHashDecoder, BlockHashDecoderError, Ntxid, OutPoint, OutPointDecoder,
+ Ntxid, OutPoint, OutPointDecoder,
OutPointDecoderError, OutPointEncoder, ParseOutPointError, Transaction, TransactionDecoder,
TransactionDecoderError, TransactionEncoder, TxIn, TxInDecoder, TxInDecoderError,
TxInEncoder, TxOut, TxOutDecoder, TxOutDecoderError, TxOutEncoder, Txid, Version,Why this scored 20/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.