applin

Crates.ioapplin
lib.rsapplin
version0.2.9
sourcesrc
created_at2023-11-04 19:29:20.403899
updated_at2024-11-03 05:39:21.860256
descriptionBackend library for the Applinβ„’ Server-Driven UI framework
homepage
repositoryhttps://github.com/leonhard-llc/applin-rust
max_upload_size
id1025421
size176,872
Michael Leonhard (mleonhard)

documentation

README

applin-rust

crates.io version unsafe forbidden pipeline status

You can use the Applinβ„’ Server-Driven UI framework to build a mobile app with only server-side code.

https://www.applin.dev/

Use a provided boilerplate app for the frontend. Use this library for the backend.

Documentation: https://www.applin.dev/docs/

Example and live demo: https://github.com/leonhard-llc/applin-rust-demo

Related crate: applin_headless

Cargo Geiger Safety Report


Metric output format: x/y
    x = unsafe code used by the build
    y = total unsafe code found in the crate

Symbols: 
    πŸ”’  = No `unsafe` usage found, declares #![forbid(unsafe_code)]
    ❓  = No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☒️  = `unsafe` usage found

Functions  Expressions  Impls  Traits  Methods  Dependency

0/0        0/0          0/0    0/0     0/0      πŸ”’  applin 0.2.9
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”œβ”€β”€ servlin 0.6.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ safina 0.6.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ async-fs 2.1.2
4/4        222/222      40/40  0/0     13/13    ☒️  β”‚   β”‚   β”œβ”€β”€ async-lock 3.4.0
0/0        2/2          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ event-listener-strategy 0.5.2
0/0        39/49        8/12   0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ event-listener 5.3.1
0/0        183/183      2/2    0/0     1/1      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ concurrent-queue 2.5.0
4/4        12/75        4/16   0/0     0/3      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── crossbeam-utils 0.8.20
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ parking 2.2.1
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   └── pin-project-lite 0.2.14
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   └── pin-project-lite 0.2.14
0/0        39/49        8/12   0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ event-listener 5.3.1
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚   └── pin-project-lite 0.2.14
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”œβ”€β”€ blocking 1.6.1
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”œβ”€β”€ async-channel 2.3.1
0/0        183/183      2/2    0/0     1/1      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ concurrent-queue 2.5.0
0/0        2/2          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ event-listener-strategy 0.5.2
0/0        36/36        2/2    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ futures-core 0.3.31
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   └── pin-project-lite 0.2.14
1/1        860/866      4/4    0/0     13/13    ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ async-task 4.7.1
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”œβ”€β”€ futures-io 0.3.31
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”œβ”€β”€ futures-lite 2.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ fastrand 2.1.1
0/0        36/36        2/2    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ futures-core 0.3.31
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ futures-io 0.3.31
27/41      1973/2421    2/2    0/0     109/147  ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ memchr 2.7.4
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ parking 2.2.1
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   └── pin-project-lite 0.2.14
0/0        28/28        2/2    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ piper 0.2.4
0/0        32/32        2/2    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ atomic-waker 1.1.2
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ fastrand 2.1.1
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   └── futures-io 0.3.31
0/0        14/14        1/1    0/0     0/0      ☒️  β”‚   β”‚   β”‚   └── tracing 0.1.40
0/0        11/191       0/0    0/0     2/2      ☒️  β”‚   β”‚   β”‚       β”œβ”€β”€ pin-project-lite 0.2.14
0/0        96/96        5/5    0/0     2/2      ☒️  β”‚   β”‚   β”‚       └── tracing-core 0.1.32
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   └── futures-lite 2.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ async-net 2.0.0
0/0        68/114       19/22  1/1     4/8      ☒️  β”‚   β”‚   β”œβ”€β”€ async-io 2.3.4
4/4        222/222      40/40  0/0     13/13    ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ async-lock 3.4.0
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
0/0        183/183      2/2    0/0     1/1      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ concurrent-queue 2.5.0
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”œβ”€β”€ futures-io 0.3.31
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”œβ”€β”€ futures-lite 2.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”‚   β”œβ”€β”€ parking 2.2.1
0/2        34/420       5/20   1/4     5/14     ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ polling 3.7.3
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
53/389     2527/7252    6/8    1/1     20/35    ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rustix 0.38.37
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bitflags 2.6.0
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── serde 1.0.211
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       └── serde_derive 1.0.211
0/0        15/15        0/0    0/0     3/3      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ proc-macro2 1.0.88
0/0        4/4          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚           β”‚   └── unicode-ident 1.0.13
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ quote 1.0.37
0/0        15/15        0/0    0/0     3/3      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚           β”‚   └── proc-macro2 1.0.88
0/0        88/88        3/3    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚           └── syn 2.0.82
0/0        15/15        0/0    0/0     3/3      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚               β”œβ”€β”€ proc-macro2 1.0.88
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚               β”œβ”€β”€ quote 1.0.37
0/0        4/4          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚               └── unicode-ident 1.0.13
0/0        35/103       0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ errno 0.3.9
1/90       10/596       0/2    0/0     5/69     ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── libc 0.2.161
0/0        7/7          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ itoa 1.0.11
1/90       10/596       0/2    0/0     5/69     ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   └── libc 0.2.161
0/0        14/14        1/1    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   └── tracing 0.1.40
53/389     2527/7252    6/8    1/1     20/35    ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ rustix 0.38.37
0/0        23/23        0/0    0/0     3/3      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ slab 0.4.9
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   └── serde 1.0.211
0/0        14/14        1/1    0/0     0/0      ☒️  β”‚   β”‚   β”‚   └── tracing 0.1.40
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   β”œβ”€β”€ blocking 1.6.1
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   └── futures-lite 2.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ fixed-buffer 1.0.0
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   └── futures-io 0.3.31
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”œβ”€β”€ futures-io 0.3.31
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”œβ”€β”€ futures-lite 2.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ permit 0.2.1
0/0        32/32        0/0    0/0     0/0      ☒️  β”‚   β”œβ”€β”€ rand 0.8.5
1/90       10/596       0/2    0/0     5/69     ☒️  β”‚   β”‚   β”œβ”€β”€ libc 0.2.161
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”œβ”€β”€ rand_chacha 0.3.1
2/2        632/680      0/0    0/0     17/25    ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ ppv-lite86 0.2.20
2/2        116/116      7/7    8/8     8/8      ☒️  β”‚   β”‚   β”‚   β”‚   └── zerocopy 0.7.35
0/1        162/179      0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ byteorder 1.5.0
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚       └── zerocopy-derive 0.7.35
0/0        15/15        0/0    0/0     3/3      ☒️  β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ proc-macro2 1.0.88
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ quote 1.0.37
0/0        88/88        3/3    0/0     2/2      ☒️  β”‚   β”‚   β”‚   β”‚           └── syn 2.0.82
0/0        2/2          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”œβ”€β”€ rand_core 0.6.4
3/6        51/192       0/1    0/0     1/3      ☒️  β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ getrandom 0.2.15
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
1/90       10/596       0/2    0/0     5/69     ☒️  β”‚   β”‚   β”‚   β”‚   β”‚   └── libc 0.2.161
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   β”‚   └── serde 1.0.211
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”‚   └── serde 1.0.211
0/0        2/2          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”œβ”€β”€ rand_core 0.6.4
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   └── serde 1.0.211
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ safe-regex 0.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚   └── safe-regex-macro 0.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚       β”œβ”€β”€ safe-proc-macro2 1.0.67
0/0        4/4          0/0    0/0     0/0      ☒️  β”‚   β”‚       β”‚   └── unicode-ident 1.0.13
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚       └── safe-regex-compiler 0.3.0
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚           β”œβ”€β”€ safe-proc-macro2 1.0.67
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚           └── safe-quote 1.0.15
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”‚               └── safe-proc-macro2 1.0.67
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”œβ”€β”€ serde 1.0.211
0/0        66/69        0/0    0/0     0/0      ☒️  β”‚   β”œβ”€β”€ serde_json 1.0.132
0/0        7/7          0/0    0/0     0/0      ☒️  β”‚   β”‚   β”œβ”€β”€ itoa 1.0.11
27/41      1973/2421    2/2    0/0     109/147  ☒️  β”‚   β”‚   β”œβ”€β”€ memchr 2.7.4
7/9        572/702      0/0    0/0     2/2      ☒️  β”‚   β”‚   β”œβ”€β”€ ryu 1.0.18
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚   β”‚   └── serde 1.0.211
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ temp-dir 0.1.14
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚   β”œβ”€β”€ temp-file 0.1.9
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   └── url 2.5.2
0/0        2/2          0/0    0/0     0/0      ☒️  β”‚       β”œβ”€β”€ form_urlencoded 1.2.1
0/0        8/8          0/0    0/0     0/0      ☒️  β”‚       β”‚   └── percent-encoding 2.3.1
0/0        0/0          0/0    0/0     0/0      ❓  β”‚       β”œβ”€β”€ idna 0.5.0
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚       β”‚   β”œβ”€β”€ unicode-bidi 0.3.17
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚       β”‚   β”‚   └── serde 1.0.211
1/1        24/24        0/0    0/0     0/0      ☒️  β”‚       β”‚   └── unicode-normalization 0.1.24
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚       β”‚       └── tinyvec 1.8.0
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚       β”‚           β”œβ”€β”€ serde 1.0.211
0/0        0/0          0/0    0/0     0/0      πŸ”’  β”‚       β”‚           └── tinyvec_macros 0.1.1
0/0        8/8          0/0    0/0     0/0      ☒️  β”‚       β”œβ”€β”€ percent-encoding 2.3.1
0/0        5/5          0/0    0/0     0/0      ☒️  β”‚       └── serde 1.0.211
0/0        7/20         0/0    0/0     0/0      ☒️  β”œβ”€β”€ nanorand 0.7.0
3/6        51/192       0/1    0/0     1/3      ☒️  β”‚   └── getrandom 0.2.15
0/0        5/5          0/0    0/0     0/0      ☒️  β”œβ”€β”€ serde 1.0.211
0/0        66/69        0/0    0/0     0/0      ☒️  └── serde_json 1.0.132

105/552    8003/14873   112/151 11/14   212/355

Changelog

  • v0.2.9 2024-10-26
    • Add ModalButton::new and ModalButton::with_actions.
    • Upgrade to servlin v0.6.
  • v0.2.8 - Make debug formatting more concise by using JSON, for better test failure messages.
  • v0.2.7
    • Support ApplinIos 0.38.0.
    • Add checkbox_button.
  • v0.2.6 - Add RowList::push, RowList::new, OptWidgetList::push, and OptWidgetList::new.
  • v0.2.5 - Add WidgetList::push and WidgetList::new.
  • v0.2.4
    • Support ApplinIos 0.36.0.
    • Add reset_var and stop_actions actions.
  • v0.2.3 - Add id field to Action and ModalButton, for testing.
  • v0.2.2 - Add with_validated to input widgets. Supports ApplinIos 0.33.0.
  • v0.2.1
    • Add id fields for testing.
    • Make Action fields public.
    • Make Real32 and enums Copy.
  • v0.2.0
    • Support ApplinIos 0.32.0.
    • Remove on_user_error_poll action and make it a parameter of the rpc action.
  • v0.1.7
    • Support ApplinIos 0.31.0.
    • Add modal action.
    • Add aspect_ratio to choose_photo and take_photo actions.
  • v0.1.6
    • Support ApplinIos 0.28.0.
    • Add logout action.
    • Add selector widget.
  • v0.1.5
    • Support ApplinIos 0.25.0.
    • Add poll_delay_ms to checkbox and textfield.
    • Replace checkbox rpc field with actions.
  • v0.1.4
    • Add From<Option<Into<Widget>>> for Widget for use with error_text.
    • Add SessionCookie, Id, and Secret.
    • Organize into modules for easier discovery.
  • v0.1.3 - Add on_user_error_poll action.
  • v0.1.2 - Bugfixes
  • v0.1.1 - Update documentation.
  • v0.1.0 - First published version
Commit count: 51

cargo fmt