小编Hen*_*ing的帖子

需要 Sized 的 trait 与无法拥有该 trait 的 trait 对象有什么关系?

我有这个代码(操场):

trait NodeLike: Sized {}

fn main() {
    let s: Box<NodeLike> = panic!();
}
Run Code Online (Sandbox Code Playgroud)

哪个不编译:

trait NodeLike: Sized {}

fn main() {
    let s: Box<NodeLike> = panic!();
}
Run Code Online (Sandbox Code Playgroud)

毕竟我读过,我仍然不明白为什么它不能编译以及为什么它没有Sized约束。

据我所知:

  • Box<NodeLike>被视为Box<dyn NodeLike>对方法调用使用动态调度。
  • Box<NodeLike> 无论如何,无论其项目类型如何。
  • 有大小/无大小理论是必要的,因为有些类型的大小是事先未知的(如数组或字符串)。
  • 特征上的Sized标记强制实现类型的大小。

要求实现类型Sized与不能拥有该特征的对象(具有动态调度)有什么关系?

traits rust

9
推荐指数
1
解决办法
2026
查看次数

了解 Unicode:代理块、非字符

我试图真正了解 unicode 标准,并且正在浏览xml 规范,其中写道:

字符 ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* 任何 Unicode 字符,不包括代理块、FFFE 和 FFFF。*/

现在我有几个问题:

  • 什么是代理块?它们是表示 4 字节代码点的 UTF-16 代码吗?
  • #xXXXX 是指代码点还是此处的 UTF-16 编码值?
  • 如果它指的是代码点并且我对代理块的理解是正确的:为什么这里提到代理块?从编码映射的空间中隐藏那些与编码相关的细节不是编码的任务吗?
  • 为什么像“U+FFFE”这样的非字符被定义为 unicode 标准的一部分?据我所知,字节顺序检测(以及处理灵活大小的代码字)取决于编码。

谢谢澄清!

unicode encoding utf-8 utf-16

4
推荐指数
1
解决办法
1956
查看次数

Git Merge -冲突样式 diff3 和合并之间的区别

语境

git mergemerge.conflictStyle考虑合并冲突情况下的设置。可能的值为merge(默认)和diff3

我注意到diff3有时会产生更大的冲突(参见下面的示例)。我找到了这篇论文,它diff3非常详细地描述了该算法,但我找不到太多关于默认merge算法的信息。

问题

merge和算法之间的确切区别是什么diff3?默认merge算法到底是如何工作的?

例子

我有这些文件:

  • 根据:
1
2
3
Run Code Online (Sandbox Code Playgroud)
  • 你的:
1
change1
change2
input1OnlyChange1
change3
change4
change5
change6
input1OnlyChange2
change7
change8
change9
2
3
Run Code Online (Sandbox Code Playgroud)
  • 他们的:
1
change1
change2
input2OnlyChange1
change3
change4
change5
change6
input2OnlyChange2
change7
change8
change9
2
3
Run Code Online (Sandbox Code Playgroud)

我得到merge2 个冲突标记:

1
change1
change2
<<<<<<< HEAD
input1OnlyChange1
=======
input2OnlyChange1
>>>>>>> input2
change3
change4
change5
change6
<<<<<<< …
Run Code Online (Sandbox Code Playgroud)

git git-merge diff3

3
推荐指数
1
解决办法
494
查看次数

表达式为"A._"的Haskell令牌

Haskell如何解释表达式A._?例如main = print $ A._.

Haskell抛出以下错误错误:

source_file.hs:1:16:
    Found hole ‘_’ with type: r0
    Where: ‘r0’ is an ambiguous type variable
    Relevant bindings include
      main :: IO ()
        (bound at source_file.hs:1:1)
    In the second argument of ‘($)’, namely ‘A._’
    In the expression: print $ A._
    In an equation for ‘main’: main = print $ A._
Run Code Online (Sandbox Code Playgroud)

但是,根据Haskell的语法参考,A._应该被解释为consym (A),varsym (.)并且reservedid (_),因为_不是有效的varid(varids不能是reservedids). …

syntax haskell typed-holes

1
推荐指数
1
解决办法
105
查看次数

标签 统计

diff3 ×1

encoding ×1

git ×1

git-merge ×1

haskell ×1

rust ×1

syntax ×1

traits ×1

typed-holes ×1

unicode ×1

utf-16 ×1

utf-8 ×1