cairo_lang_sierra/extensions/modules/
branch_align.rs

1use crate::extensions::lib_func::{
2    LibfuncSignature, SierraApChange, SignatureSpecializationContext,
3};
4use crate::extensions::{NoGenericArgsGenericLibfunc, SpecializationError};
5
6/// Libfunc for aligning branches.
7/// Used to equalize environment changes across merging paths.
8/// This may include gas usages and ap changes.
9#[derive(Default)]
10pub struct BranchAlignLibfunc {}
11impl NoGenericArgsGenericLibfunc for BranchAlignLibfunc {
12    const STR_ID: &'static str = "branch_align";
13
14    fn specialize_signature(
15        &self,
16        _context: &dyn SignatureSpecializationContext,
17    ) -> Result<LibfuncSignature, SpecializationError> {
18        Ok(LibfuncSignature::new_non_branch(vec![], vec![], SierraApChange::BranchAlign))
19    }
20}