diff --git a/lang/src/lib.rs b/lang/src/lib.rs index a5e15a6ce6..f69a77dd87 100644 --- a/lang/src/lib.rs +++ b/lang/src/lib.rs @@ -317,24 +317,34 @@ pub mod __private { /// Use this with a custom error type. /// /// # Example -/// -/// After defining an `ErrorCode` -/// /// ```ignore +/// // Instruction function +/// pub fn set_data(ctx: Context, data: u64) -> ProgramResult { +/// require!(ctx.accounts.data.mutation_allowed, MyError::MutationForbidden); +/// ctx.accounts.data.data = data; +/// Ok(()) +/// } +/// +/// // An enum for custom error codes /// #[error] -/// pub struct ErrorCode { -/// InvalidArgument, +/// pub enum MyError { +/// MutationForbidden /// } -/// ``` /// -/// One can write a `require` assertion as +/// // An account definition +/// #[account] +/// #[derive(Default)] +/// pub struct MyData { +/// mutation_allowed: bool, +/// data: u64 +/// } /// -/// ```ignore -/// require!(condition, InvalidArgument); +/// // An account validation struct +/// #[derive(Accounts)] +/// pub struct SetData<'info> { +/// pub data: Account<'info, MyData> +/// } /// ``` -/// -/// which would exit the program with the `InvalidArgument` error code if -/// `condition` is false. #[macro_export] macro_rules! require { ($invariant:expr, $error:tt $(,)?) => {