#语法 #编程语言 #表示 #类型 #Go #扩展 #提供

type-protocol

提供一种简单语法来表示类型的包

1 个不稳定版本

0.1.0 2023年9月13日

#56#表示

MIT/Apache

23KB
504 行(不含注释)

type-protocol

受 Go 编程语言启发的提供简单语法的类型表示的包。


lib.rs:

受 Go 编程语言启发的提供简单语法的类型表示的包。

通用类型

这些是在大多数语言中常见的数据类型。

  • 布尔类型:bool
  • 有符号整数类型:intisizeint8int16int32int64int128
  • 无符号整数类型:uintusizeuint8uint16uint32uint64uint128
  • 浮点类型:float16float32float64
  • 字符和字符串类型:charstring

扩展类型

这些是常见的特殊数据类型,前缀为 +。

  • +bytes
  • +dateTime+date+time+duration
  • +decimal
  • +uuid
  • +rgb+rgba

类型和路径

任何不以保留符号开始的字符串段如果是非内建类型,则为 类型路径。内建类型使用 snake_case,因此您应该使用 PascalCase 以避免冲突。

  • 命名类型

MyTypeFoöbárHello World2022

可以根据用户需求提供验证器来验证标识符。

《RustIdent》验证器将失败Hello World2022,而《AsciiIdent》验证器还将失败Foöbár

注意,type-protocol 语法将空白符视为普通字符,如果需要,用户负责去除它们。

  • 路径

path::to::类型

  • 绝对路径

::path::to::类型

可选类型

?T表示可选类型,如Option<T>或可空指针。

例如:?string

数组类型

[N]T表示固定大小的数组类型,如[T;N]。N必须是一个整数。

例如:[4]int

Vec 类型

[]T表示动态大小的数组类型,如Vec<T>

例如:[]int

集合类型

[T]表示唯一键的集合,如HashSet<T>

例如:[string]

映射类型

[TKey]TValue表示键值对的集合,如HashMap<T>

例如:[string]int

提示类型

  • 外部提示

@T提示T是外部类型。

依赖关系

~0.3–1MB
~24K SLoC