16 个版本

0.2.8 2024 年 3 月 22 日
0.2.7 2024 年 2 月 28 日
0.2.4 2024 年 1 月 24 日
0.1.7 2024 年 1 月 10 日
0.1.2 2023 年 11 月 10 日

#101 in GUI

Download history 8/week @ 2024-03-28 2/week @ 2024-04-04 3/week @ 2024-05-16 3/week @ 2024-05-23 3/week @ 2024-05-30 4/week @ 2024-06-06 3/week @ 2024-06-13 84/week @ 2024-07-04 14/week @ 2024-07-11

98 每月下载量
用于 applin_headless

自定义许可协议

155KB
4.5K SLoC

applin-rust

crates.io version unsafe forbidden pipeline status

您可以使用 Applin™ 服务器驱动 UI 框架仅使用服务器端代码来构建移动应用。

https://www.applin.dev/

使用提供的样板前端应用。使用此库进行后端。

文档:https://www.applin.dev/docs/

示例和实时演示:https://github.com/leonhard-llc/applin-rust-demo

相关 crate:applin_headless

Cargo Geiger 安全报告


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.8
0/0        7/20         0/0    0/0     0/0      ☢️  ├── nanorand 0.7.0
3/7        47/225       0/1    0/0     1/3      ☢️  │   └── getrandom 0.2.12
0/0        0/0          0/0    0/0     0/0      ❓  │       ├── cfg-if 1.0.0
1/90       10/582       0/2    0/0     5/63     ☢️  │       └── libc 0.2.152
0/0        75/121       5/9    0/0     2/4      ☢️  ├── once_cell 1.19.0
0/0        5/5          0/0    0/0     0/0      ☢️  ├── serde 1.0.195
0/0        0/0          0/0    0/0     0/0      ❓  │   └── serde_derive 1.0.195
0/0        15/15        0/0    0/0     3/3      ☢️  │       ├── proc-macro2 1.0.78
0/0        4/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.35
0/0        15/15        0/0    0/0     3/3      ☢️  │       │   └── proc-macro2 1.0.78
0/0        80/80        3/3    0/0     2/2      ☢️  │       └── syn 2.0.48
0/0        15/15        0/0    0/0     3/3      ☢️  │           ├── proc-macro2 1.0.78
0/0        0/0          0/0    0/0     0/0      ❓  │           ├── quote 1.0.35
0/0        4/4          0/0    0/0     0/0      ☢️  │           └── unicode-ident 1.0.12
0/0        4/7          0/0    0/0     0/0      ☢️  ├── serde_json 1.0.111
0/0        7/7          0/0    0/0     0/0      ☢️  │   ├── itoa 1.0.10
7/9        579/715      0/0    0/0     2/2      ☢️  │   ├── ryu 1.0.16
0/0        5/5          0/0    0/0     0/0      ☢️  │   └── serde 1.0.195
0/0        0/0          0/0    0/0     0/0      🔒  └── servlin 0.4.3
0/0        4/4          0/0    0/0     2/2      ☢️      ├── async-fs 1.6.0[build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      │   └── autocfg 1.1.0
4/4        230/230      40/40  0/0     12/12    ☢️      │   ├── async-lock 2.8.0
0/0        106/116      4/8    0/0     0/0      ☢️      │   │   └── event-listener 2.5.3
0/0        0/0          0/0    0/0     0/0      🔒      │   ├── blocking 1.5.1
0/0        0/0          0/0    0/0     0/0      🔒      │   │   ├── async-channel 2.1.1
0/0        170/170      2/2    0/0     1/1      ☢️      │   │   │   ├── concurrent-queue 2.4.0
4/4        12/76        4/16   0/0     0/3      ☢️      │   │   │   │   └── crossbeam-utils 0.8.19
0/0        59/87        6/12   0/0     0/0      ☢️      │   │   │   ├── event-listener 4.0.3
0/0        170/170      2/2    0/0     1/1      ☢️      │   │   │   │   ├── concurrent-queue 2.4.0
0/0        0/0          0/0    0/0     0/0      🔒      │   │   │   │   ├── parking 2.2.0
0/0        11/191       0/0    0/0     2/2      ☢️      │   │   │   │   └── pin-project-lite 0.2.13
0/0        2/2          0/0    0/0     0/0      ☢️      │   │   │   ├── event-listener-strategy 0.4.0
0/0        59/87        6/12   0/0     0/0      ☢️      │   │   │   │   ├── event-listener 4.0.3
0/0        11/191       0/0    0/0     2/2      ☢️      │   │   │   │   └── pin-project-lite 0.2.13
0/0        37/37        2/2    0/0     0/0      ☢️      │   │   │   ├── futures-core 0.3.30
0/0        11/191       0/0    0/0     2/2      ☢️      │   │   │   └── pin-project-lite 0.2.13
4/4        228/228      40/40  0/0     13/13    ☢️      │   │   ├── async-lock 3.3.0
0/0        59/87        6/12   0/0     0/0      ☢️      │   │   │   ├── event-listener 4.0.3
0/0        2/2          0/0    0/0     0/0      ☢️      │   │   │   ├── event-listener-strategy 0.4.0
0/0        11/191       0/0    0/0     2/2      ☢️      │   │   │   └── pin-project-lite 0.2.13
1/1        860/866      4/4    0/0     13/13    ☢️      │   │   ├── async-task 4.7.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.30
0/0        0/0          0/0    0/0     0/0      ❓      │   │   ├── futures-lite 2.2.0
0/0        0/0          0/0    0/0     0/0      🔒      │   │   │   ├── fastrand 2.0.1
0/0        37/37        2/2    0/0     0/0      ☢️      │   │   │   ├── futures-core 0.3.30
0/0        0/0          0/0    0/0     0/0      ❓      │   │   │   ├── futures-io 0.3.30
27/41      2047/2495    2/2    0/0     109/147  ☢️      │   │   │   ├── memchr 2.7.1
2/2        18/20        1/1    0/0     0/0      ☢️      │   │   │   │   └── log 0.4.20
0/0        5/5          0/0    0/0     0/0      ☢️      │   │   │   │       └── serde 1.0.195
0/0        0/0          0/0    0/0     0/0      🔒      │   │   │   ├── parking 2.2.0
0/0        11/191       0/0    0/0     2/2      ☢️      │   │   │   └── pin-project-lite 0.2.13
0/0        28/28        2/2    0/0     0/0      ☢️      │   │   ├── piper 0.2.1
0/0        33/33        2/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.30
0/0        14/14        1/1    0/0     0/0      ☢️      │   │   └── tracing 0.1.40
2/2        18/20        1/1    0/0     0/0      ☢️      │   │       ├── log 0.4.20
0/0        11/191       0/0    0/0     2/2      ☢️      │   │       ├── pin-project-lite 0.2.13
0/0        96/96        5/5    0/0     2/2      ☢️      │   │       └── tracing-core 0.1.32
0/0        75/121       5/9    0/0     2/4      ☢️      │   │           └── once_cell 1.19.0
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        37/37        2/2    0/0     0/0      ☢️      │       ├── futures-core 0.3.30
0/0        0/0          0/0    0/0     0/0      ❓      │       ├── futures-io 0.3.30
27/41      2047/2495    2/2    0/0     109/147  ☢️      │       ├── memchr 2.7.1
0/0        0/0          0/0    0/0     0/0      🔒      │       ├── parking 2.2.0
0/0        11/191       0/0    0/0     2/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/0          0/0    0/0     0/0      🔒      ├── async-net 1.8.0
0/0        2/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
4/4        230/230      40/40  0/0     12/12    ☢️      │   │   ├── async-lock 2.8.0
0/0        0/0          0/0    0/0     0/0      ❓      │   │   ├── cfg-if 1.0.0
0/0        170/170      2/2    0/0     1/1      ☢️      │   │   ├── concurrent-queue 2.4.0
0/0        0/0          0/0    0/0     0/0      ❓      │   │   ├── futures-lite 1.13.0
2/2        18/20        1/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        11/250       5/16   1/4     0/5      ☢️      │   │   ├── polling 2.8.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      ❓      │   │   │   ├── cfg-if 1.0.0
1/90       10/582       0/2    0/0     5/63     ☢️      │   │   │   ├── libc 0.2.152
2/2        18/20        1/1    0/0     0/0      ☢️      │   │   │   └── log 0.4.20
44/371     1847/6661    1/2    0/0     6/22     ☢️      │   │   ├── rustix 0.37.27
0/0        0/0          0/0    0/0     0/0      ❓      │   │   │   ├── bitflags 1.3.2
0/0        35/103       0/0    0/0     0/0      ☢️      │   │   │   ├── errno 0.3.8
1/90       10/582       0/2    0/0     5/63     ☢️      │   │   │   │   └── libc 0.2.152
0/0        24/666       27/36  2/2     6/14     ☢️      │   │   │   ├── io-lifetimes 1.0.11
1/90       10/582       0/2    0/0     5/63     ☢️      │   │   │   │   ├── libc 0.2.152
3/6        542/675      2/4    0/0     3/4      ☢️      │   │   │   │   └── socket2 0.4.10
1/90       10/582       0/2    0/0     5/63     ☢️      │   │   │   │       └── libc 0.2.152
0/0        7/7          0/0    0/0     0/0      ☢️      │   │   │   ├── itoa 1.0.10
1/90       10/582       0/2    0/0     5/63     ☢️      │   │   │   └── libc 0.2.152
0/0        24/24        0/0    0/0     3/3      ☢️      │   │   ├── slab 0.4.9
0/0        5/5          0/0    0/0     0/0      ☢️      │   │   │   └── serde 1.0.195
                                                           │   │   │   [build-dependencies]
0/0        0/0          0/0    0/0     0/0      ❓      │   │   │   └── autocfg 1.1.0
3/6        542/675      2/4    0/0     3/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.5.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.30
0/0        0/0          0/0    0/0     0/0      ❓      ├── futures-io 0.3.30
0/0        0/0          0/0    0/0     0/0      ❓      ├── futures-lite 1.13.0
0/0        75/121       5/9    0/0     2/4      ☢️      ├── once_cell 1.19.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/582       0/2    0/0     5/63     ☢️      │   ├── libc 0.2.152
2/2        18/20        1/1    0/0     0/0      ☢️      │   ├── log 0.4.20
0/0        0/0          0/0    0/0     0/0      ❓      │   ├── rand_chacha 0.3.1
2/2        636/712      0/0    0/0     17/25    ☢️      │   │   ├── ppv-lite86 0.2.17
0/0        2/2          0/0    0/0     0/0      ☢️      │   │   ├── rand_core 0.6.4
3/7        47/225       0/1    0/0     1/3      ☢️      │   │   │   ├── getrandom 0.2.12
0/0        5/5          0/0    0/0     0/0      ☢️      │   │   │   └── serde 1.0.195
0/0        5/5          0/0    0/0     0/0      ☢️      │   │   └── serde 1.0.195
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.195
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        4/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        75/121       5/9    0/0     2/4      ☢️      │   └── once_cell 1.19.0
0/0        5/5          0/0    0/0     0/0      ☢️      ├── serde 1.0.195
0/0        4/7          0/0    0/0     0/0      ☢️      ├── serde_json 1.0.111
0/0        0/0          0/0    0/0     0/0      🔒      ├── temp-dir 0.1.12
0/0        0/0          0/0    0/0     0/0      🔒      ├── temp-file 0.1.8
0/0        0/0          0/0    0/0     0/0      ❓      └── url 2.5.0
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.15
0/0        5/5          0/0    0/0     0/0      ☢️          │   │   └── serde 1.0.195
0/0        20/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        5/5          0/0    0/0     0/0      ☢️          │           ├── serde 1.0.195
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.195

102/542    7978/15638   158/210 3/6     204/345

更新日志

  • v0.2.8 - 使用 JSON 进行调试格式化,以获得更好的测试失败消息。
  • v0.2.7
    • 支持 ApplinIos 0.38.0。
    • 添加 checkbox_button
  • v0.2.6 - 添加 RowList::pushRowList::newOptWidgetList::pushOptWidgetList::new
  • v0.2.5 - 添加 WidgetList::pushWidgetList::new
  • v0.2.4
    • 支持 ApplinIos 0.36.0。
    • 添加 reset_varstop_actions 动作。
  • v0.2.3 - 将 id 字段添加到 ActionModalButton,以便于测试。
  • v0.2.2 - 将 with_validated 添加到输入小部件。支持 ApplinIos 0.33.0。
  • v0.2.1
    • 为测试添加 id 字段。
    • Action 字段设置为公共。
    • Real32 和枚举设置为 Copy
  • v0.2.0
    • 支持 ApplinIos 0.32.0。
    • 移除 on_user_error_poll 动作,并将其作为 rpc 动作的一个参数。
  • 版本0.1.7
    • 支持 ApplinIos 0.31.0。
    • 添加 modal 动作。
    • choose_phototake_photo 动作添加 aspect_ratio
  • 版本0.1.6
    • 支持 ApplinIos 0.28.0。
    • 添加 logout 动作。
    • 添加 selector 小部件。
  • 版本0.1.5
    • 支持 ApplinIos 0.25.0。
    • 为复选框和文本框添加 poll_delay_ms
    • 将复选框的 rpc 字段替换为 actions
  • 版本0.1.4
    • Widget 添加 From<Option<Into<Widget>>>,用于与 error_text 一起使用。
    • 添加 SessionCookieIdSecret
    • 组织成模块以便更容易查找。
  • 版本0.1.3 - 添加 on_user_error_poll 动作。
  • 版本0.1.2 - 修复错误。
  • 版本0.1.1 - 更新文档。
  • 版本0.1.0 - 首次发布版本

依赖项

~0.7–14MB
~142K SLoC