Skip to main content

fret_platform/
lib.rs

1//! Portable platform contracts.
2//!
3//! This crate is intentionally backend-agnostic (no `winit`, no `wgpu`, no `accesskit`).
4//!
5//! Backend implementations live in crates like:
6//! - `fret-platform-native` (native: Windows/macOS/Linux)
7//! - `fret-platform-web` (wasm32: browser APIs)
8//! - future: `fret-platform-ios` / `fret-platform-android`
9//!
10//! For module ownership and “where should this go?” guidance, see `crates/fret-platform/README.md`.
11
12pub mod clipboard;
13pub mod external_drop;
14pub mod file_dialog;
15pub mod open_url;
16
17// -----------------------------------------------------------------------------
18// Stable re-exports (portable platform surface)
19// -----------------------------------------------------------------------------
20pub use clipboard::{Clipboard, ClipboardError, ClipboardErrorKind};
21pub use external_drop::{ExternalDropProvider, ExternalDropReadLimits};
22pub use file_dialog::{
23    FileDialogError, FileDialogErrorKind, FileDialogProvider, FileDialogReadLimits,
24};
25pub use open_url::{OpenUrl, OpenUrlError, OpenUrlErrorKind};
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30
31    #[test]
32    fn facade_reexports_portable_platform_surface() {
33        let _ = std::mem::size_of::<ClipboardError>();
34        let _ = std::mem::size_of::<FileDialogError>();
35        let _ = std::mem::size_of::<OpenUrlError>();
36
37        let limits = ExternalDropReadLimits {
38            max_total_bytes: 1,
39            max_file_bytes: 2,
40            max_files: 3,
41        };
42        let _: FileDialogReadLimits = limits;
43    }
44}