轨道
/
Rust
Rust
/
练习
/
DOT DSL
DOT DSL

DOT DSL

中等

说明

领域特定语言(DSL)是一种针对特定领域优化的小型语言。由于 DSL 有明确的针对性,它允许使用者声明自己_想要什么_,而不是_如何去_做,因此能极大地提升工作效率和理解程度。

它的一个常见应用领域是复杂的自定义和配置。

例如,DOT 语言允许你用文本描述一张图,然后由 Graphviz 工具(比如dot)将其转换成图片。一个简单的图长这样:

graph {
    graph [bgcolor="yellow"]
    a [color="red"]
    b [color="blue"]
    a -- b [color="green"]
}

把这段内容放进文件example.dot,再运行dot example.dot -T png -o example.png,就会生成一张example.png图片:黄色背景上,一个红色圆圈和一个蓝色圆圈由一条绿色线相连。

请编写一个类似 Graphviz dot 语言的领域特定语言。

我们的 DSL 与 Graphviz dot 语言相似,都是用来创建图数据结构的。不过,与 DOT 语言不同,我们的 DSL 是一种内部 DSL,只在本语言中使用。

进一步了解内部 DSL 与外部 DSL 的区别。

建造者模式

本练习希望你使用 builder pattern 构建多个 struct。简单来说,这个模式让你把一个包含大量参数的 struct 构造函数拆分成几个独立的函数。这样一来,你就能以紧凑却高度灵活的方式构建和配置 struct。

你可以在这个页面上了解更多。


来源

Wikipedia链接会在新窗口或新标签页中打开
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Rust Exercism

准备好开始 DOT DSL 了吗?

注册 Exercism,借助 99 个练习 和真人导师指导,学习并掌握 Rust,全部免费。