当前位置: 首页 > 知识库问答 >
问题:

rust对于不定长和不定类型的数据处理?

邵博艺
2024-07-17

目前我在写一个mariadb的驱动,但是碰到了一个问题。

mariadb的对于查询的数据返回分为了两部分:
1.每个字段的类型,类似于[i32, String]
2.以String表示的每个字段的值["1", "alpha"]

我希望把2中String表示的字段值转换成1中特定数据类型,但是由于每个查询的字段数和字段类型都是不定的,请问这个大概需要怎么做。

烦请各位大佬指一下方向,谢谢。

共有1个答案

习洲
2024-07-17

这种建议参考一下其他类库,如MySQL。

https://docs.rs/mysql/latest/mysql/enum.Value.html

pub enum Value {
    NULL,
    Bytes(Vec<u8>),
    Int(i64),
    UInt(u64),
    Float(f32),
    Double(f64),
    Date(u16, u8, u8, u8, u8, u8, u32),
    Time(bool, u32, u8, u8, u8, u32),
}
 类似资料:
  • 大部分类型有一个特定的大小,以字节为单位,它们在编译时是已知的。例如,一个i32是 32 位大,或者 4 个字节。然而,有些类型有益于表达,却没有一个定义的大小。它们叫做“不定长”或者“动态大小”类型。一个例子是[T]。这个类型代表一个特定数量t的序列。不过我们并不知道有多少,所以大小是未知的。 Rust 知道几个这样的类型,不过它们有一些限制。这有三个: 我们只能通过指针操作一个不定长类型的实例

  • 我有下面的输入类,当我在输入中触发没有'interactionId'参数的api时,我期望验证错误消息"interactionId不能为空",但是验证通过,我想可能是由于interactionId的默认值为0。 能找个人吗。当输入中没有给出“long”参数时,是否帮助对其强制执行此验证? 使用@NOTURTTY作为客户ID参数,它可以按预期工作。使用@NOTURTY作为长参数"interactio

  • 本文向大家介绍为什么js里定义的数组可以不定长且数据类型可以不固定呢?相关面试题,主要包含被问及为什么js里定义的数组可以不定长且数据类型可以不固定呢?时的应答技巧和注意事项,需要的朋友参考一下 V8引擎做的封装,分为快数组和慢数组,不指定length的话都是快数组,指定了length小于等于1024就是快数组,大于1024就是慢数组。

  • 我听说,等数据类型的大小可能因平台而异。 我的第一个问题是:有人能举个例子,当程序假设一个是4字节,但在不同的平台上是2字节时,出了什么问题? 我的另一个问题与此有关。我知道人们用一些来解决这个问题,比如你有,,-这些变量保证是8位、16位、32位的,不管平台是什么——我的问题是,这通常是如何实现的?(我不是指library中的类型-我很好奇,怎么能强制某些类型总是说32位而不考虑平台??)

  • 本文向大家介绍Rust 自定义错误类型,包括了Rust 自定义错误类型的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在尝试运行Protege推理机,有两个推理机可用Fact和HermiT 1.3.7。 我找不到任何错误消息或日志消息。 推理器没有启动。 我尝试使用Export推断公理选项作为本体,然后得到预期的错误消息“No Reasonizer Initialized” 请建议。 编辑1: 由于定义了新的数据类型而导致的错误日志: 正在使用的本体: http://pastebin.com/L0heDLBy

  • 当使用Spring的RestTemplate将一些JSON响应反序列化为对象时,我没有这样做,因为我使用了Kotlin数据类作为对象模型。 这是数据类: 我使用这些依赖项: 执行涉及RestTemboard逻辑的单元测试时的错误消息: 原因:com.fasterxml.jackson.databind.exc.无效定义异常:无法构造的实例(没有Creator,如默认构造,存在):无法从Object

  • 我得到了下面的代码,使用数组来查找一些prim数。然而,当试图编译我的用户类PalindromeArrayUser时,它说——“类中的构造函数不能应用于给定的类型” 要求:int。找到:没有论点。原因:实际参数和正式参数列表的长度不同。 但是,我已经向构造器传递了一个int值(与我的蓝图中设计的方式相同)。我不太明白问题来自哪里。谢谢。 这是我的两节课 而这就是我的用户类问题的来源。上面的类编译良