Skip to main content

Crate fission_core

Crate fission_core 

Source
Expand description

§fission-core

The runtime, widget system, and action/reducer architecture for the Fission UI framework.

fission-core provides:

§Getting started

use fission_core::*;
use fission_core::ui::*;

// Define application state
#[derive(Debug, Default)]
struct MyState { value: String }
impl AppState for MyState {}

// Build a widget
struct MyWidget;
impl Widget<MyState> for MyWidget {
    fn build(&self, ctx: &mut BuildCtx<MyState>, view: &View<MyState>) -> Node {
        Text::new(&*view.state.value).into_node()
    }
}

Re-exports§

pub use action::Action;
pub use action::ActionEnvelope;
pub use action::ActionId;
pub use action::ActionScopeId;
pub use action::AppState;
pub use async_runtime::BoxFuture;
pub use async_runtime::JobCtx;
pub use async_runtime::JobRef;
pub use async_runtime::JobSpec;
pub use async_runtime::ResourceExecutionContext;
pub use async_runtime::ServiceBindings;
pub use async_runtime::ServiceCtx;
pub use async_runtime::ServiceRunner;
pub use async_runtime::ServiceSlot;
pub use async_runtime::ServiceSpec;
pub use async_runtime::ServiceType;
pub use capability::CapabilityCtx;
pub use capability::CapabilityInvocationPayload;
pub use capability::CapabilityType;
pub use capability::OpenUrlCapability;
pub use capability::OpenUrlRequest;
pub use capability::OperationCapability;
pub use capability::PickOpenFilesCapability;
pub use capability::PickOpenFilesError;
pub use capability::PickOpenFilesRequest;
pub use capability::PickOpenFilesResult;
pub use capability::PickedFile;
pub use capability::OPEN_URL;
pub use capability::PICK_OPEN_FILES;
pub use context::BarcodeScannerEffects;
pub use context::BiometricEffects;
pub use context::BluetoothEffects;
pub use context::CameraEffects;
pub use context::ClipboardEffects;
pub use context::Effects;
pub use context::GeolocationEffects;
pub use context::HapticEffects;
pub use context::MicrophoneEffects;
pub use context::NfcEffects;
pub use context::NotificationEffects;
pub use context::PasskeyEffects;
pub use context::ReducerContext;
pub use context::VolumeEffects;
pub use context::WifiEffects;
pub use effect::ActionInput;
pub use effect::Effect;
pub use effect::EffectEnvelope;
pub use effect::RuntimeEffect;
pub use env::Clipboard;
pub use env::Env;
pub use env::ImeHandler;
pub use env::InteractionStateMap;
pub use env::RuntimeState;
pub use env::ScrollStateMap;
pub use env::WindowEnv;
pub use env::WindowTitle;
pub use runtime::Runtime;
pub use event::InputEvent;
pub use event::KeyCode;
pub use event::KeyEvent;
pub use event::LifecycleEvent;
pub use event::PointerButton;
pub use event::PointerEvent;
pub use lowering::LoweringContext;
pub use lowering::NodeBuilder;
pub use platform::CancelAllNotificationsCapability;
pub use platform::CancelNotificationCapability;
pub use platform::CancelNotificationRequest;
pub use platform::DeepLinkConfig;
pub use platform::DeepLinkReceived;
pub use platform::DeepLinkSource;
pub use platform::GetNotificationSettingsCapability;
pub use platform::NotificationActionButton;
pub use platform::NotificationError;
pub use platform::NotificationId;
pub use platform::NotificationPermission;
pub use platform::NotificationPermissionRequest;
pub use platform::NotificationReceipt;
pub use platform::NotificationRequest;
pub use platform::NotificationResponse;
pub use platform::NotificationResponseReceived;
pub use platform::NotificationSchedule;
pub use platform::NotificationSettings;
pub use platform::NotificationSound;
pub use platform::PushPlatform;
pub use platform::PushRegistration;
pub use platform::PushRegistrationRequest;
pub use platform::RegisterPushNotificationsCapability;
pub use platform::RequestNotificationPermissionCapability;
pub use platform::ScheduleNotificationCapability;
pub use platform::SetBadgeCountCapability;
pub use platform::SetBadgeCountRequest;
pub use platform::ShowNotificationCapability;
pub use platform::UnregisterPushNotificationsCapability;
pub use platform::CANCEL_ALL_NOTIFICATIONS;
pub use platform::CANCEL_NOTIFICATION;
pub use platform::GET_NOTIFICATION_SETTINGS;
pub use platform::REGISTER_PUSH_NOTIFICATIONS;
pub use platform::REQUEST_NOTIFICATION_PERMISSION;
pub use platform::SCHEDULE_NOTIFICATION;
pub use platform::SET_BADGE_COUNT;
pub use platform::SHOW_NOTIFICATION;
pub use platform::UNREGISTER_PUSH_NOTIFICATIONS;
pub use platform_barcode::BarcodeFormat;
pub use platform_barcode::BarcodeImageDecodeRequest;
pub use platform_barcode::BarcodePoint;
pub use platform_barcode::BarcodeScanRequest;
pub use platform_barcode::BarcodeScanResult;
pub use platform_barcode::BarcodeScanResults;
pub use platform_barcode::BarcodeScannerError;
pub use platform_barcode::CancelBarcodeScanCapability;
pub use platform_barcode::DecodeBarcodeImageCapability;
pub use platform_barcode::ScanBarcodeCapability;
pub use platform_barcode::CANCEL_BARCODE_SCAN;
pub use platform_barcode::DECODE_BARCODE_IMAGE;
pub use platform_barcode::SCAN_BARCODE;
pub use platform_biometric::AuthenticateBiometricCapability;
pub use platform_biometric::BiometricAuthenticateRequest;
pub use platform_biometric::BiometricAuthenticateResult;
pub use platform_biometric::BiometricAvailability;
pub use platform_biometric::BiometricError;
pub use platform_biometric::BiometricKind;
pub use platform_biometric::BiometricStrength;
pub use platform_biometric::CancelBiometricAuthenticationCapability;
pub use platform_biometric::GetBiometricAvailabilityCapability;
pub use platform_biometric::AUTHENTICATE_BIOMETRIC;
pub use platform_biometric::CANCEL_BIOMETRIC_AUTHENTICATION;
pub use platform_biometric::GET_BIOMETRIC_AVAILABILITY;
pub use platform_bluetooth::BluetoothAdvertiseReceipt;
pub use platform_bluetooth::BluetoothAdvertiseRequest;
pub use platform_bluetooth::BluetoothAvailability;
pub use platform_bluetooth::BluetoothConnectRequest;
pub use platform_bluetooth::BluetoothConnection;
pub use platform_bluetooth::BluetoothDevice;
pub use platform_bluetooth::BluetoothDisconnectRequest;
pub use platform_bluetooth::BluetoothError;
pub use platform_bluetooth::BluetoothMode;
pub use platform_bluetooth::BluetoothPermission;
pub use platform_bluetooth::BluetoothPermissionRequest;
pub use platform_bluetooth::BluetoothReadRequest;
pub use platform_bluetooth::BluetoothReadResult;
pub use platform_bluetooth::BluetoothScanRequest;
pub use platform_bluetooth::BluetoothScanResult;
pub use platform_bluetooth::BluetoothStopAdvertiseRequest;
pub use platform_bluetooth::BluetoothWriteRequest;
pub use platform_bluetooth::ConnectBluetoothDeviceCapability;
pub use platform_bluetooth::DisconnectBluetoothDeviceCapability;
pub use platform_bluetooth::GetBluetoothAvailabilityCapability;
pub use platform_bluetooth::ReadBluetoothCharacteristicCapability;
pub use platform_bluetooth::RequestBluetoothPermissionCapability;
pub use platform_bluetooth::ScanBluetoothDevicesCapability;
pub use platform_bluetooth::StartBluetoothAdvertisingCapability;
pub use platform_bluetooth::StopBluetoothAdvertisingCapability;
pub use platform_bluetooth::WriteBluetoothCharacteristicCapability;
pub use platform_bluetooth::CONNECT_BLUETOOTH_DEVICE;
pub use platform_bluetooth::DISCONNECT_BLUETOOTH_DEVICE;
pub use platform_bluetooth::GET_BLUETOOTH_AVAILABILITY;
pub use platform_bluetooth::READ_BLUETOOTH_CHARACTERISTIC;
pub use platform_bluetooth::REQUEST_BLUETOOTH_PERMISSION;
pub use platform_bluetooth::SCAN_BLUETOOTH_DEVICES;
pub use platform_bluetooth::START_BLUETOOTH_ADVERTISING;
pub use platform_bluetooth::STOP_BLUETOOTH_ADVERTISING;
pub use platform_bluetooth::WRITE_BLUETOOTH_CHARACTERISTIC;
pub use platform_camera::CameraAvailability;
pub use platform_camera::CameraCapture;
pub use platform_camera::CameraCaptureRequest;
pub use platform_camera::CameraDevice;
pub use platform_camera::CameraError;
pub use platform_camera::CameraFacing;
pub use platform_camera::CameraFlashMode;
pub use platform_camera::CameraFlashlightRequest;
pub use platform_camera::CameraImageFormat;
pub use platform_camera::CameraPermission;
pub use platform_camera::CameraPermissionRequest;
pub use platform_camera::CameraResolution;
pub use platform_camera::CancelCameraCaptureCapability;
pub use platform_camera::CapturePhotoCapability;
pub use platform_camera::GetCameraAvailabilityCapability;
pub use platform_camera::RequestCameraPermissionCapability;
pub use platform_camera::SetCameraFlashlightCapability;
pub use platform_camera::CANCEL_CAMERA_CAPTURE;
pub use platform_camera::CAPTURE_PHOTO;
pub use platform_camera::GET_CAMERA_AVAILABILITY;
pub use platform_camera::REQUEST_CAMERA_PERMISSION;
pub use platform_camera::SET_CAMERA_FLASHLIGHT;
pub use platform_clipboard::ClearClipboardCapability;
pub use platform_clipboard::ClipboardContent;
pub use platform_clipboard::ClipboardError;
pub use platform_clipboard::ClipboardItem;
pub use platform_clipboard::ClipboardText;
pub use platform_clipboard::ClipboardWriteTextRequest;
pub use platform_clipboard::ReadClipboardContentCapability;
pub use platform_clipboard::ReadClipboardTextCapability;
pub use platform_clipboard::WriteClipboardContentCapability;
pub use platform_clipboard::WriteClipboardTextCapability;
pub use platform_clipboard::CLEAR_CLIPBOARD;
pub use platform_clipboard::READ_CLIPBOARD_CONTENT;
pub use platform_clipboard::READ_CLIPBOARD_TEXT;
pub use platform_clipboard::WRITE_CLIPBOARD_CONTENT;
pub use platform_clipboard::WRITE_CLIPBOARD_TEXT;
pub use platform_geolocation::GeolocationError;
pub use platform_geolocation::GeolocationPermission;
pub use platform_geolocation::GeolocationPermissionRequest;
pub use platform_geolocation::GeolocationPosition;
pub use platform_geolocation::GeolocationPositionRequest;
pub use platform_geolocation::GetCurrentPositionCapability;
pub use platform_geolocation::GetGeolocationPermissionCapability;
pub use platform_geolocation::RequestGeolocationPermissionCapability;
pub use platform_geolocation::GET_CURRENT_POSITION;
pub use platform_geolocation::GET_GEOLOCATION_PERMISSION;
pub use platform_geolocation::REQUEST_GEOLOCATION_PERMISSION;
pub use platform_haptics::HapticError;
pub use platform_haptics::HapticImpactCapability;
pub use platform_haptics::HapticImpactRequest;
pub use platform_haptics::HapticImpactStyle;
pub use platform_haptics::HapticNotificationCapability;
pub use platform_haptics::HapticNotificationKind;
pub use platform_haptics::HapticNotificationRequest;
pub use platform_haptics::HapticPatternCapability;
pub use platform_haptics::HapticPatternRequest;
pub use platform_haptics::HapticPatternStep;
pub use platform_haptics::HapticSelectionCapability;
pub use platform_haptics::HAPTIC_IMPACT;
pub use platform_haptics::HAPTIC_NOTIFICATION;
pub use platform_haptics::HAPTIC_PATTERN;
pub use platform_haptics::HAPTIC_SELECTION;
pub use platform_microphone::AudioSampleFormat;
pub use platform_microphone::CancelMicrophoneCaptureCapability;
pub use platform_microphone::CaptureMicrophoneAudioCapability;
pub use platform_microphone::GetMicrophoneAvailabilityCapability;
pub use platform_microphone::MicrophoneAvailability;
pub use platform_microphone::MicrophoneCapture;
pub use platform_microphone::MicrophoneCaptureRequest;
pub use platform_microphone::MicrophoneDevice;
pub use platform_microphone::MicrophoneError;
pub use platform_microphone::MicrophonePermission;
pub use platform_microphone::MicrophonePermissionRequest;
pub use platform_microphone::RequestMicrophonePermissionCapability;
pub use platform_microphone::CANCEL_MICROPHONE_CAPTURE;
pub use platform_microphone::CAPTURE_MICROPHONE_AUDIO;
pub use platform_microphone::GET_MICROPHONE_AVAILABILITY;
pub use platform_microphone::REQUEST_MICROPHONE_PERMISSION;
pub use platform_nfc::CancelNfcSessionCapability;
pub use platform_nfc::EmulateNfcTagCapability;
pub use platform_nfc::GetNfcAvailabilityCapability;
pub use platform_nfc::NfcAvailability;
pub use platform_nfc::NfcEmulationRequest;
pub use platform_nfc::NfcError;
pub use platform_nfc::NfcRecord;
pub use platform_nfc::NfcRecordTypeNameFormat;
pub use platform_nfc::NfcScanRequest;
pub use platform_nfc::NfcSessionReceipt;
pub use platform_nfc::NfcTag;
pub use platform_nfc::NfcTagDiscovered;
pub use platform_nfc::NfcTechnology;
pub use platform_nfc::NfcWriteRequest;
pub use platform_nfc::ScanNfcTagCapability;
pub use platform_nfc::WriteNfcTagCapability;
pub use platform_nfc::CANCEL_NFC_SESSION;
pub use platform_nfc::EMULATE_NFC_TAG;
pub use platform_nfc::GET_NFC_AVAILABILITY;
pub use platform_nfc::SCAN_NFC_TAG;
pub use platform_nfc::WRITE_NFC_TAG;
pub use platform_passkey::AuthenticatePasskeyCapability;
pub use platform_passkey::CancelPasskeyOperationCapability;
pub use platform_passkey::GetPasskeyAvailabilityCapability;
pub use platform_passkey::PasskeyAlgorithm;
pub use platform_passkey::PasskeyAttestationConveyance;
pub use platform_passkey::PasskeyAuthenticationRequest;
pub use platform_passkey::PasskeyAuthenticationResult;
pub use platform_passkey::PasskeyAuthenticatorAttachment;
pub use platform_passkey::PasskeyAuthenticatorSelection;
pub use platform_passkey::PasskeyAvailability;
pub use platform_passkey::PasskeyCredentialDescriptor;
pub use platform_passkey::PasskeyError;
pub use platform_passkey::PasskeyMediation;
pub use platform_passkey::PasskeyRegistrationRequest;
pub use platform_passkey::PasskeyRegistrationResult;
pub use platform_passkey::PasskeyRelyingParty;
pub use platform_passkey::PasskeyResidentKeyRequirement;
pub use platform_passkey::PasskeyTransport;
pub use platform_passkey::PasskeyUser;
pub use platform_passkey::PasskeyUserVerification;
pub use platform_passkey::RegisterPasskeyCapability;
pub use platform_passkey::AUTHENTICATE_PASSKEY;
pub use platform_passkey::CANCEL_PASSKEY_OPERATION;
pub use platform_passkey::GET_PASSKEY_AVAILABILITY;
pub use platform_passkey::REGISTER_PASSKEY;
pub use platform_volume::AdjustVolumeLevelCapability;
pub use platform_volume::GetVolumeLevelCapability;
pub use platform_volume::SetVolumeLevelCapability;
pub use platform_volume::VolumeAdjustDirection;
pub use platform_volume::VolumeAdjustRequest;
pub use platform_volume::VolumeError;
pub use platform_volume::VolumeLevel;
pub use platform_volume::VolumeSetRequest;
pub use platform_volume::VolumeStream;
pub use platform_volume::ADJUST_VOLUME_LEVEL;
pub use platform_volume::GET_VOLUME_LEVEL;
pub use platform_volume::SET_VOLUME_LEVEL;
pub use platform_wifi::ConnectWifiNetworkCapability;
pub use platform_wifi::DisconnectWifiNetworkCapability;
pub use platform_wifi::GetWifiAvailabilityCapability;
pub use platform_wifi::RequestWifiPermissionCapability;
pub use platform_wifi::ScanWifiNetworksCapability;
pub use platform_wifi::WifiAvailability;
pub use platform_wifi::WifiConnectRequest;
pub use platform_wifi::WifiConnection;
pub use platform_wifi::WifiDisconnectRequest;
pub use platform_wifi::WifiError;
pub use platform_wifi::WifiNetwork;
pub use platform_wifi::WifiPermission;
pub use platform_wifi::WifiPermissionRequest;
pub use platform_wifi::WifiScanRequest;
pub use platform_wifi::WifiScanResult;
pub use platform_wifi::WifiSecurity;
pub use platform_wifi::CONNECT_WIFI_NETWORK;
pub use platform_wifi::DISCONNECT_WIFI_NETWORK;
pub use platform_wifi::GET_WIFI_AVAILABILITY;
pub use platform_wifi::REQUEST_WIFI_PERMISSION;
pub use platform_wifi::SCAN_WIFI_NETWORKS;
pub use registry::ActionRegistry;
pub use registry::AnimationPropertyId;
pub use registry::AnimationRequest;
pub use registry::AnimationStartValue;
pub use registry::BuildCtx;
pub use registry::EasingFunction;
pub use registry::Handler;
pub use registry::JobResource;
pub use registry::PortalLayer;
pub use registry::RawActionHandler;
pub use registry::ResourceKey;
pub use registry::ResourcePolicy;
pub use registry::ResourceRegistry;
pub use registry::RuntimeResourceDeclaration;
pub use registry::RuntimeResourceKind;
pub use registry::ServiceResource;
pub use registry::TimerResource;
pub use registry::VideoRegistration;
pub use time::Clock;
pub use time::CurrentTime;
pub use ui::ActionScope;
pub use ui::Builder;
pub use ui::Button;
pub use ui::Column;
pub use ui::CustomEventResult;
pub use ui::CustomHitResult;
pub use ui::CustomNode;
pub use ui::CustomRenderObject;
pub use ui::LayoutBuilder;
pub use ui::Lower;
pub use ui::LowerDyn;
pub use ui::Node;
pub use ui::Row;
pub use ui::Text;
pub use view::Selector;
pub use view::View;
pub use view::Widget;

Modules§

action
Actions, envelopes, and application state traits.
async_runtime
capability
context
Reducer context and effect builder.
diff
effect
Side-effect primitives for async operations.
env
event
Input events consumed by the Runtime.
hit_test
input
lowering
media
op
platform
Platform services shared by Fission shells.
platform_barcode
Barcode scanner host capabilities.
platform_biometric
Biometric authentication host capabilities.
platform_bluetooth
Bluetooth host capabilities.
platform_camera
Camera and flashlight host capabilities.
platform_clipboard
Clipboard host capabilities.
platform_geolocation
Geolocation host capabilities.
platform_haptics
Haptics host capabilities.
platform_microphone
Microphone host capabilities.
platform_nfc
NFC host capabilities.
platform_passkey
Passkey and WebAuthn host capabilities.
platform_volume
Volume-control host capabilities.
platform_wifi
Wi-Fi host capabilities.
registry
runtime
scrollbar
time
ui
view
Read-only view, widget trait, and selector pattern.

Macros§

reduce
Short alias for reduce_with!.
reduce_with
Coerces a reducer function item or non-capturing closure to the handler function-pointer type Rust can infer from the surrounding ctx.bind(...) call.
with_reducer
Binds an action to a reducer in one expression.

Structs§

ADVANCE_TO_ACTION_ID
AdvanceTo
An action that sets the runtime clock to an absolute timestamp.
BoxConstraints
Minimum and maximum width/height bounds passed from parent to child during layout.
LayoutEngine
The constraint-based layout solver.
LayoutPoint
A 2D point in layout coordinate space.
LayoutRect
An axis-aligned rectangle: an origin point plus a size.
LayoutSize
A 2D size in layout coordinate space.
LayoutSnapshot
The complete output of a layout pass.
NodeId
A content-addressed 128-bit node identity.
TICK_ACTION_ID
Tick
A frame-tick action that advances the runtime clock by a delta.
WidgetNodeId
A 128-bit identity for a widget.

Enums§

BadgeTone
ButtonHierarchy
CardPattern
ComponentSize
ComponentState
EmbedKind
FlexDirection
LayoutOp
Op

Traits§

TextMeasurer
A platform-provided text measurement backend.

Type Aliases§

BoxedReducer
A type-erased reducer function stored in the Runtime.
LayoutUnit
The scalar type used for all layout measurements.