Skip to main content

binius_iop/fri/
error.rs

1// Copyright 2024-2025 Irreducible Inc.
2// Copyright 2026 The Binius Developers
3
4use super::batch;
5use crate::{merkle_channel, merkle_tree};
6
7#[derive(Debug, thiserror::Error)]
8pub enum Error {
9	#[error("Merkle channel error: {0}")]
10	Channel(merkle_channel::Error),
11	#[error("Reed-Solomon encoding error: {0}")]
12	Verification(#[from] VerificationError),
13}
14
15impl From<binius_ip::channel::Error> for Error {
16	fn from(err: binius_ip::channel::Error) -> Self {
17		Self::Channel(err.into())
18	}
19}
20
21impl From<merkle_channel::Error> for Error {
22	fn from(err: merkle_channel::Error) -> Self {
23		match err {
24			merkle_channel::Error::MerkleTree(merkle_tree::Error::Verification(err)) => {
25				Self::Verification(err.into())
26			}
27			_ => Self::Channel(err),
28		}
29	}
30}
31
32impl From<batch::Error> for Error {
33	fn from(err: batch::Error) -> Self {
34		match err {
35			batch::Error::Channel(err) => err.into(),
36			batch::Error::IPChannel(err) => Self::Channel(err.into()),
37		}
38	}
39}
40
41#[derive(Debug, thiserror::Error)]
42pub enum VerificationError {
43	#[error("Merkle tree error: {0}")]
44	MerkleError(#[from] merkle_tree::VerificationError),
45}