applin 0.2.0

Backend library for the Applinβ„’ Server-Driven UI framework
Documentation

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

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.1.3
0/0        0/5          0/0    0/0     0/0      ❓  β”œβ”€β”€ serde 1.0.190
0/0        0/0          0/0    0/0     0/0      ❓  β”‚   └── serde_derive 1.0.190
0/0        0/15         0/0    0/0     0/3      ❓  β”‚       β”œβ”€β”€ proc-macro2 1.0.69
0/0        0/4          0/0    0/0     0/0      ❓  β”‚       β”‚   └── unicode-ident 1.0.12
0/0        0/0          0/0    0/0     0/0      ❓  β”‚       β”œβ”€β”€ quote 1.0.33
0/0        0/15         0/0    0/0     0/3      ❓  β”‚       β”‚   └── proc-macro2 1.0.69
0/0        0/79         0/3    0/0     0/2      ❓  β”‚       └── syn 2.0.38
0/0        0/15         0/0    0/0     0/3      ❓  β”‚           β”œβ”€β”€ proc-macro2 1.0.69
0/0        0/0          0/0    0/0     0/0      ❓  β”‚           β”œβ”€β”€ quote 1.0.33
0/0        0/4          0/0    0/0     0/0      ❓  β”‚           └── unicode-ident 1.0.12
0/0        0/0          0/0    0/0     0/0      πŸ”’  └── servlin 0.4.0
0/0        0/4          0/0    0/0     0/2      ❓      β”œβ”€β”€ async-fs 1.6.0
0/4        0/230        0/40   0/0     0/12     ❓      β”‚   β”œβ”€β”€ async-lock 2.8.0
0/0        0/116        0/8    0/0     0/0      ❓      β”‚   β”‚   └── event-listener 2.5.3
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”œβ”€β”€ blocking 1.4.1
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”œβ”€β”€ async-channel 1.9.0
0/0        0/170        0/2    0/0     0/1      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ concurrent-queue 2.3.0
0/4        0/94         0/16   0/0     0/3      ❓      β”‚   β”‚   β”‚   β”‚   └── crossbeam-utils 0.8.16
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”‚       └── cfg-if 1.0.0
0/0        0/116        0/8    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ event-listener 2.5.3
0/0        0/37         0/2    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── futures-core 0.3.29
0/4        0/230        0/40   0/0     0/12     ❓      β”‚   β”‚   β”œβ”€β”€ async-lock 2.8.0
0/1        0/864        0/4    0/0     0/12     ❓      β”‚   β”‚   β”œβ”€β”€ async-task 4.5.0
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”œβ”€β”€ fastrand 2.0.1
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ futures-io 0.3.29
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ futures-lite 1.13.0
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”‚   β”œβ”€β”€ fastrand 1.9.0
0/0        0/37         0/2    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ futures-core 0.3.29
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ futures-io 0.3.29
0/41       0/2501       0/2    0/0     0/147    ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ memchr 2.6.4
0/2        0/20         0/1    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”‚   └── log 0.4.20
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”‚       └── serde 1.0.190
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”‚   β”œβ”€β”€ parking 2.2.0
0/0        0/191        0/0    0/0     0/2      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ pin-project-lite 0.2.13
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”‚   └── waker-fn 1.1.1
0/0        0/28         0/2    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ piper 0.2.1
0/0        0/33         0/2    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ atomic-waker 1.1.2
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”‚   β”œβ”€β”€ fastrand 2.0.1
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── futures-io 0.3.29
0/0        0/14         0/1    0/0     0/0      ❓      β”‚   β”‚   └── tracing 0.1.40
0/2        0/20         0/1    0/0     0/0      ❓      β”‚   β”‚       β”œβ”€β”€ log 0.4.20
0/0        0/191        0/0    0/0     0/2      ❓      β”‚   β”‚       β”œβ”€β”€ pin-project-lite 0.2.13
0/0        0/96         0/5    0/0     0/2      ❓      β”‚   β”‚       └── tracing-core 0.1.32
0/0        0/121        0/9    0/0     0/4      ❓      β”‚   β”‚           └── once_cell 1.18.0
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   └── futures-lite 1.13.0
                                                           β”‚   [build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   └── autocfg 1.1.0
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ async-net 1.8.0
0/0        0/4          0/0    0/0     0/0      ❓      β”‚   β”œβ”€β”€ async-io 1.13.0
                                                           β”‚   β”‚   [build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   └── autocfg 1.1.0
0/4        0/230        0/40   0/0     0/12     ❓      β”‚   β”‚   β”œβ”€β”€ async-lock 2.8.0
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
0/0        0/170        0/2    0/0     0/1      ❓      β”‚   β”‚   β”œβ”€β”€ concurrent-queue 2.3.0
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ futures-lite 1.13.0
0/2        0/20         0/1    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ log 0.4.20
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   β”œβ”€β”€ parking 2.2.0
0/1        0/250        0/16   0/4     0/5      ❓      β”‚   β”‚   β”œβ”€β”€ polling 2.8.0
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ libc 0.2.149
0/2        0/20         0/1    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── log 0.4.20
                                                           β”‚   β”‚   β”‚   [build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── autocfg 1.1.0
0/371      0/6661       0/2    0/0     0/22     ❓      β”‚   β”‚   β”œβ”€β”€ rustix 0.37.27
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ bitflags 1.3.2
0/0        0/100        0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ errno 0.3.5
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   β”‚   └── libc 0.2.149
0/0        0/666        0/36   0/2     0/14     ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ io-lifetimes 1.0.11
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libc 0.2.149
0/6        0/675        0/4    0/0     0/4      ❓      β”‚   β”‚   β”‚   β”‚   └── socket2 0.4.10
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   β”‚       └── libc 0.2.149
0/0        0/7          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ itoa 1.0.9
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   └── libc 0.2.149
0/0        0/24         0/0    0/0     0/3      ❓      β”‚   β”‚   β”œβ”€β”€ slab 0.4.9
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── serde 1.0.190
                                                           β”‚   β”‚   β”‚   [build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── autocfg 1.1.0
0/6        0/675        0/4    0/0     0/4      ❓      β”‚   β”‚   β”œβ”€β”€ socket2 0.4.10
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”‚   └── waker-fn 1.1.1
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”œβ”€β”€ blocking 1.4.1
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   └── futures-lite 1.13.0
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ fixed-buffer 0.5.0
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   └── futures-io 0.3.29
0/0        0/0          0/0    0/0     0/0      ❓      β”œβ”€β”€ futures-io 0.3.29
0/0        0/0          0/0    0/0     0/0      ❓      β”œβ”€β”€ futures-lite 1.13.0
0/0        0/121        0/9    0/0     0/4      ❓      β”œβ”€β”€ once_cell 1.18.0
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ permit 0.2.1
0/0        0/32         0/0    0/0     0/0      ❓      β”œβ”€β”€ rand 0.8.5
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”œβ”€β”€ libc 0.2.149
0/2        0/20         0/1    0/0     0/0      ❓      β”‚   β”œβ”€β”€ log 0.4.20
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”œβ”€β”€ rand_chacha 0.3.1
0/2        0/712        0/0    0/0     0/25     ❓      β”‚   β”‚   β”œβ”€β”€ ppv-lite86 0.2.17
0/0        0/2          0/0    0/0     0/0      ❓      β”‚   β”‚   β”œβ”€β”€ rand_core 0.6.4
0/7        0/228        0/1    0/0     0/3      ❓      β”‚   β”‚   β”‚   β”œβ”€β”€ getrandom 0.2.10
0/0        0/0          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if 1.0.0
0/90       0/554        0/2    0/0     0/55     ❓      β”‚   β”‚   β”‚   β”‚   └── libc 0.2.149
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   β”‚   β”‚   └── serde 1.0.190
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   β”‚   └── serde 1.0.190
0/0        0/2          0/0    0/0     0/0      ❓      β”‚   β”œβ”€β”€ rand_core 0.6.4
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   └── serde 1.0.190
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ safe-regex 0.2.5
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   └── safe-regex-macro 0.2.5
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚       β”œβ”€β”€ safe-proc-macro2 1.0.67
0/0        0/4          0/0    0/0     0/0      ❓      β”‚       β”‚   └── unicode-ident 1.0.12
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚       └── safe-regex-compiler 0.2.5
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        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ safina-executor 0.3.3
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   β”œβ”€β”€ safina-sync 0.2.4
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”‚   └── safina-threadpool 0.2.4
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ safina-sync 0.2.4
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ safina-timer 0.1.11
0/0        0/121        0/9    0/0     0/4      ❓      β”‚   └── once_cell 1.18.0
0/0        0/5          0/0    0/0     0/0      ❓      β”œβ”€β”€ serde 1.0.190
0/0        0/7          0/0    0/0     0/0      ❓      β”œβ”€β”€ serde_json 1.0.108
0/0        0/7          0/0    0/0     0/0      ❓      β”‚   β”œβ”€β”€ itoa 1.0.9
0/9        0/715        0/0    0/0     0/2      ❓      β”‚   β”œβ”€β”€ ryu 1.0.15
0/0        0/5          0/0    0/0     0/0      ❓      β”‚   └── serde 1.0.190
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ temp-dir 0.1.11
0/0        0/0          0/0    0/0     0/0      πŸ”’      β”œβ”€β”€ temp-file 0.1.7
0/0        0/0          0/0    0/0     0/0      ❓      └── url 2.4.1
0/0        0/2          0/0    0/0     0/0      ❓          β”œβ”€β”€ form_urlencoded 1.2.0
0/0        0/8          0/0    0/0     0/0      ❓          β”‚   └── percent-encoding 2.3.0
0/0        0/0          0/0    0/0     0/0      ❓          β”œβ”€β”€ idna 0.4.0
0/0        0/5          0/0    0/0     0/0      ❓          β”‚   β”œβ”€β”€ unicode-bidi 0.3.13
0/0        0/5          0/0    0/0     0/0      ❓          β”‚   β”‚   └── serde 1.0.190
0/0        0/20         0/0    0/0     0/0      ❓          β”‚   └── unicode-normalization 0.1.22
0/0        0/0          0/0    0/0     0/0      πŸ”’          β”‚       └── tinyvec 1.6.0
0/0        0/5          0/0    0/0     0/0      ❓          β”‚           β”œβ”€β”€ serde 1.0.190
0/0        0/0          0/0    0/0     0/0      πŸ”’          β”‚           └── tinyvec_macros 0.1.1
0/0        0/8          0/0    0/0     0/0      ❓          β”œβ”€β”€ percent-encoding 2.3.0
0/0        0/5          0/0    0/0     0/0      ❓          └── serde 1.0.190

0/538      0/15294      0/158  0/6     0/323  

Changelog

  • 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