小编Dev*_*XYS的帖子

关于引用的可变性和引用所指的值的可变性的一些混淆

我知道 Rust 引用很像 C 指针,并且我一直将 Rust 引用视为 C 指针。经过一些实验和搜索,我很困惑。

\n

我熟悉 C,并且读过What\'s the Difference between Placeing \xe2\x80\x9cmut\xe2\x80\x9d before a variable name and after the \xe2\x80\x9c:\xe2\ x80\x9d?,给出下表:

\n
\n
// Rust          C/C++\n    a: &T     == const T* const a; // can\'t mutate either\nmut a: &T     == const T* a;       // can\'t mutate what is pointed to\n    a: &mut T == T* const a;       // can\'t mutate pointer\nmut a: &mut T == T* a;             // can mutate both\n
Run Code Online (Sandbox Code Playgroud)\n
\n …

reference mutability rust

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

oh-my-posh 提示中未渲染的字符

我刚刚在 Windows 上的 PowerShell Core 7.1.1 上安装了 oh-my-posh,并且在 Windows 终端中使用 PowerShell。切换到git仓库后,提示如下: 在此输入图像描述 一些字符显示为框,应该是三角形和分支字符,例如 在此输入图像描述 我目前正在使用Cascadia字体,并尝试Meslo LG M Regular过其他一些字体,但没有任何效果。

我还将编码设置为 UTF-8,并且我可以在命令行中键入 Unicode 字符,并且它们会正确显示。

如何解决缺少方框字体的问题?

git powershell powershell-core windows-terminal

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

Racket - 如何定义一个可以在语法转换器和普通代码中使用的函数?

我正在使用语法转换器在 Racket 中定义宏。我想创建一些辅助函数来帮助我操作语法。但是,我在语法转换器外部定义的函数在语法转换器内部不可用。例如,在下面的代码中

(define (my-function x) (+ x 1))

(define-syntax my-macro
  (lambda (stx)
    (datum->syntax stx (my-function (cadr (syntax->datum stx))))))
Run Code Online (Sandbox Code Playgroud)

我收到错误“我的函数:在阶段:1 处引用未绑定标识符;变压器环境”。

经过一番搜索后,我能够编写以下代码,以便my-function在语法转换器中可用。

(begin-for-syntax
  (define (my-function x) (+ x 1)))
(provide (for-syntax my-function))

(define-syntax my-macro
  (lambda (stx)
    (datum->syntax stx (my-function (cadr (syntax->datum stx))))))
Run Code Online (Sandbox Code Playgroud)

但问题是,my-function这次在语法转换器之外不可用。有时我想在普通代码中检查这些辅助函数,因此我需要能够从语法转换器的内部和外部调用它,就像 function 一样cadr。我怎样才能做到这一点?

我知道我的问题与 Racket 的语法模型有关,特别是“阶段级别”的概念,但我从来没有真正理解它。如果您能提供一些易于理解的教程来解释它,我将更加感激。

macros hygiene racket

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