5 个版本 (重大变更)
0.5.0 | 2022年1月25日 |
---|---|
0.4.0 | 2022年1月15日 |
0.3.0 | 2021年12月8日 |
0.2.0 | 2021年11月29日 |
0.1.0 | 2021年11月7日 |
在 Rust 模式 中排名第 2678
4KB
53 行
关于
NSTD 是一个旨在跨平台且相对安全的库(任何可能失败的函数都将返回一个错误代码以指示是否成功),同时具有丰富的特性和功能。目标是实现一个适用于任何平台、任何语言和任何用例的单一 API。
平台支持
可以 在任何地方 使用 core
模块。它不依赖于任何其他库,包括标准库(除了头文件 stddef.h
和 stdint.h
)。其他模块在 大多数 平台上运行,并已测试过 Windows、macOS、Linux 和 Redox 的构建。
模块概述
nstd
- 基于 CFFI 的跨平台库。alloc
- 堆分配。allocator
- 用于内存分配的自定义 vtable 结构。heap
- 类似于 Rust 的 Box。
audio
- 音频 I/O。def
- 常用音频相关类型。device
- 音频 I/O 设备句柄。host
- 平台的音频主机。player
- 音频播放器。queue
- 音频流队列。stream
- 音频 I/O 流。
collections
- 集合类型。bit_mask
- 具有小型内存占用的可定制位掩码。rc
- 通过引用计数器共享内存。stack
- 可增长的堆栈数组类型。
core
- 包含不需要操作系统即可使用的模块。char_types
- 专门针对字符类型的函数。cstr
- C 字符串检查。def
- 常用类型定义。float_types
- 专门针对浮点类型的函数。int_types
- 专门针对整数类型的函数。math
- 低级数学。platform
- 平台识别。pointer
- 指针类型。range
- 范围类型。slice
- 内存视图。str
- UTF-8 字符串切片类型。
env
- 环境特定功能及标识。events
- 事件循环。def
- 事件系统使用的通用类型。device_id
- 用于标识设备的类型。window_id
- 用于标识窗口的类型。
fs
- 文件系统。file
- 文件输入/输出。
gl
- 低级图形库。buffer
- GPU VRAM 缓冲区。command
- 设备命令。buffer
- GPU 命令缓冲区。encoder
- GPU 命令编码器。
def
- 常用的图形相关类型。device
- 用于处理图形设备的模块。handle
- 图形设备的句柄。info
- 图形设备的信息。
instance
-wgpu
的实例。render
- 渲染。pass
- 包含用于处理渲染传递的函数。pipeline
- 渲染管线。
shader
- GPU 着色器程序。module
- 着色器模块。
state
- 图形库的状态机。surface
- 与显示表面的交互。config
- 表面的配置。texture
- 表面纹理。
texture
- 用于处理纹理的模块。format
- 纹理的数据格式。view
- 纹理视图。
gui
- 图形用户界面库。display
- 显示/监视器句柄。window
- 窗口和表单。
image
- 原始图像数据输入/输出。input
- 键盘/鼠标输入。key
- 键盘类型。mouse
- 鼠标类型。
io
- 标准输入/输出。input_stream
- 输入流类型。io_stream
- 输入和输出的流类型。output_stream
- 输出流类型。stderr
- 标准错误流。stdin
- 标准输入流。stdout
- 标准输出流。stream
- 基础流类型。
math
- 高级数学。net
- 网络通信。tcp
- TCP 网络通信。udp
- UDP 网络通信。
os
- 操作系统特定功能。linux
- Linux 的 OS 支持。alloc
- Linux 的低级内存分配。
windows
- Windows 的 OS 支持。alloc
- Windows 的低级内存分配。heap
- Windows 堆管理。
def
- 常用 Windows 类型定义。io
- Windows 标准输入/输出。thread
- Windows 的线程支持。
proc
- 进程管理。rand
- 随机值生成。string
- 动态大小的UTF-8编码字符串。thread
- 线程API。time
- 获取系统时间的库。vec
- 一个动态大小的数组。
如何构建
cargo build --release --features ""
在“--features”之后,在引号内,您可以用空格分隔每个模块,并以前缀“nstd_”开头,尽管nstd_os
模块略有不同,它有自己的功能,如nstd_os_alloc
,可以单独启用,nstd_os
不是必需的。nstd_core
默认构建。如果您要将nstd构建为C库,还应使用“clib”功能,以构建适用于C ABI的模块。
示例
cargo build --release --features "clib nstd_alloc nstd_os nstd_os_io nstd_string"
或者您也可以使用
cargo build --release --all-features
来构建所有模块。
依赖关系
~1MB
~18K SLoC