```rust
extern crate napi_rs as napi;
extern crate napirsderive;
use napi::{CallContext, Error, JsNumber, JsUnknown, Module, Result, Status}; use std::convert::TryInto;
registermodule!(napiderive_example, init);
fn init(module: &mut Module) -> Result<()> { module.createnamedmethod("testThrow", test_throw)?;
module.createnamedmethod("fibonacci", fibonacci)?; Ok(()) }
fn testthrow(ctx: CallContext) -> Result
fn fibonacci(ctx: CallContext) -> Result
fn fibonaccinative(n: i64) -> i64 { match n { 1 | 2 => 1, _ => fibonaccinative(n - 1) + fibonacci_native(n - 2), } } ```