rust的自我复制程序
使用rust来实现一个自我复制的小程序
起因
如图↓
其实还给我分享了个聊天记录(点击查看)
大概讲得是将flag塞进了一个会自我复制得压缩文件里面了
实现
虽不难实现,但却是个很有趣的程序
首先我定义一个字符串变量x
,它的值为程序的前半部分
1 | fn main() {\n let x = |
再定义一个字符串变量y
,使它的值为程序的后半部分
1 | \n print!("{}{:?};\n let y = {:?};\n{}", x, x, y, y)\n} |
最后使用print!
宏输出x``y
这两个变量的值
同时用{:?}
格式化符号来显示字符串的原始形式(包括双引号和转义字符
完整的代码如下
1 | fn main() { |
当然这不仅能输出代码本身,你还可以往里面塞点其他东西,比如我在里面插入了一段,使它输出的代码中包含"hello quine"
并在控制台中打印”hello quine”
具体代码如下
1 | fn main() { |
代码仓库
MagicstMagoo/quine_rs (github.com)