Skip to main content

fre_rs/
lib.rs

1//!
2//! Safe, ergonomic Rust abstraction over the AIR Native Extension (ANE) C API ([`fre-sys`](https://crates.io/crates/fre-sys)) for native-side development.
3//!
4//! ## Getting Started
5//!
6//! The primary entry points of this crate are the macros [`extension!`] and [`function!`].
7//! Refer to their documentation for details and examples.
8//!
9//! # Flash Runtime Extension Lifecycle
10//!
11//! ```text
12//!                                   Flash Runtime ━━━━┓
13//!                                                     ┃
14//!          ExtensionContext.loadExtension ━━━━━━━━━━━━┫
15//!                ↓                                    ┃
16//!    ┏━━━━ Extension Load ━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
17//!    ┃           ↓                                    ┃
18//!    ┃     Initializer → Extension Data               ┃
19//!    ┃           ↓                                    ┃
20//!    ┃  ┏━━ ExtensionContext.createExtensionContext ━━┫
21//!    ┃  ┃        ↓                                    ┃
22//!    ┃  ┃    Context Initializer → Context Data       ┃
23//!    ┃  ┃        ↓            ↓    ↓         ↓        ┃
24//!    ┃  ┃    Function Data → Function  Extension Data ┃
25//!    ┃  ┃                     ↑                       ┃
26//!    ┃  ┣━━ ExtensionContext.call ━━━━━━━━━━━━━━━━━━━━┫
27//!    ┃  ┃                                             ┃
28//!    ┃  ┃                        Extension Data       ┃
29//!    ┃  ┃                              ↑              ┃
30//!    ┃  ┃    Context Data = `ContextRegistry`         ┃
31//!    ┃  ┃        ↓                     ↑              ┃
32//!    ┃  ┃    Context Finalizer    Function Data       ┃
33//!    ┃  ┃        ↑                                    ┃
34//!    ┃  ┗━━ ExtensionContext.dispose ━━━━━━━━━━━━━━━━━┫
35//!    ┃                                                ┃
36//!    ┃            Extension Data → Finalizer          ┃
37//!    ┃                                 ↑              ┃
38//!    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━ Extension Unload ━━━━┛
39//! ```
40//!
41
42
43/// [`fre-sys`](https://crates.io/crates/fre-sys)
44pub mod c {
45    pub use fre_sys::*;
46}
47pub mod prelude {
48    pub use crate::{
49        context::*,
50        data::Data,
51        event::*,
52        function::FunctionSet,
53        types::*,
54        validated::*,
55    };
56    pub use std::any::Any;
57}
58pub mod context;
59pub mod data;
60pub mod error;
61pub mod event;
62pub mod function;
63mod macros;
64pub mod misc;
65pub mod types;
66pub mod validated;
67pub mod utils;
68pub mod _internal;
69
70use {
71    prelude::*,
72    c::prelude::*,
73    error::*,
74    function::*,
75    utils::*,
76};
77use std::{
78    cell::Cell,
79    collections::HashMap,
80    error::Error,
81    ffi::{CStr, CString, NulError, c_void, c_char},
82    fmt::{self, Debug, Display},
83    marker::PhantomData,
84    mem::transmute,
85    ptr::NonNull,
86    str::Utf8Error,
87    sync::Arc,
88};