Skip to content

Input.rs 的问题 #5

@YYMMYB

Description

@YYMMYB

对于提交: 55b8025 input 重写, 支持反斜线换行, 支持引号(只支持这两个)

这样写我认为有一些问题:

  1. PointerState 在逻辑上不清晰, 如何理解其里面带有的String?
  2. 流程上, 似乎是先把字符追加到 PointerState 里的 String, 然后在切换状态的时候再将 PointerState 里存储的 String 整个追加到 OldPointerState 中, OldPointerState 才相当于是真正的缓存. 这样是不是太绕了, 能不能直接向 OldPointerState 中追加字符.
  3. 可以看出来是个状态机, 但是每个状态不是一个单独的类型, 而是 enum PointerState 里的一个值. 这样就导致所有状态的行为, 实际上都写到了 Decoder 里, 能不能给每个状态都创建一个类?
  4. 对于 EscapeSequence 和 EscapeSequenceInStr 两个状态是几乎一样的, 几乎只是返回状态不同. 实际上他们是回到上个状态, 有没有办法合并成一个状态.
  5. EOF 没处理
  6. 错误类型用 anyhow 这个库会不会好一些?
  7. 代码里116行提到的问题, 可以用 replace_with 这个库解决.
  8. 测试代码也没有写

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions