16 个版本
0.2.8 | 2024 年 3 月 22 日 |
---|---|
0.2.7 | 2024 年 2 月 28 日 |
0.2.4 | 2024 年 1 月 24 日 |
0.1.7 |
|
0.1.2 | 2023 年 11 月 10 日 |
#101 in GUI
98 每月下载量
用于 applin_headless
155KB
4.5K SLoC
applin-rust
您可以使用 Applin™ 服务器驱动 UI 框架仅使用服务器端代码来构建移动应用。
使用提供的样板前端应用。使用此库进行后端。
文档: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::push
,RowList::new
,OptWidgetList::push
和OptWidgetList::new
。 - v0.2.5 - 添加
WidgetList::push
和WidgetList::new
。 - v0.2.4
- 支持
ApplinIos
0.36.0。 - 添加
reset_var
和stop_actions
动作。
- 支持
- v0.2.3 - 将
id
字段添加到Action
和ModalButton
,以便于测试。 - 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_photo
和take_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
一起使用。 - 添加
SessionCookie
、Id
和Secret
。 - 组织成模块以便更容易查找。
- 为
- 版本0.1.3 - 添加
on_user_error_poll
动作。 - 版本0.1.2 - 修复错误。
- 版本0.1.1 - 更新文档。
- 版本0.1.0 - 首次发布版本
依赖项
~0.7–14MB
~142K SLoC