#ce #fsharp #do-notation #computation-expr

yerevan

一个小型的 Rust 包,它引入了来自 F# 的计算表达式理念,以帮助您更容易地与函子(functors)和单子(monads)一起工作。

3 个版本

0.1.2 2024 年 8 月 6 日
0.1.1 2024 年 8 月 6 日
0.1.0 2024 年 8 月 6 日

#426Rust 模式

Download history 301/week @ 2024-08-05

301 每月下载量

MIT 许可证

13KB
71 代码行

                                                  
                       __| __|                    
                      |  \__ \                    
                   _)_|  ____/       //~\         
                                   //  ~~\\       
              _                 /───   ~~  \\     
             / \              ───      ~~  ~~\    
            / ~~\\          /           ~~~   \   
          //   ~~\\\ ~\   /            ~~~   ~~\\ 
        //     ~~~ \~─~──── ~~         ~~~~~      
   ~──//         ~~~                              
───────╮  ~~~~   ~     ~ ~ ~~~~~~~ ~~~~~~~~~~~~~  
 #  #  │╮    ~~~~~~~~~~~~'│╭──── ╭─  ╭^^^^^^^^^
       │╯         │`  │  ╰╮───╯  ╭──╯   │ @ @ @ @ 
 #  #╭╮│╮            ╭╯   │  ╭───╯  ╭───┼─────────
   ╭─╰╯──^^╮    │`   │.   │──╯      │             
 ╭─╰───────╯^╮───────│    │  '│   ╭─│ #  #  #  #  
────────╮@ @ │──╮    │  ..│       ╰─│             
        │    │  ╰───╭╯   ╭╯         │             
 # # # #@ @ │      │    ╰─╮ '│   ╭─│ #  #  #  #  
        │────╯ '│`  │  .   ╰╮ │   ╰─│             
 # # # #│       │   │       │       │             
        │          ╭╯    .  ╰╮    ╭─│ #  #  #  #  
 # # # #'│`  ╭──╯  .      ╰╮   ╰─│             
        │   │   │     .       │     │             

概述

yerevan.rs 是一个计算表达式(do-notations)库,为 Rust 提供支持,灵感来自 F# 的 CEs,但在语法设计方面有所变化和改进。

文档

首先定义一个结构体,该结构体实现了 yerevan.rs 计算表达式所需的所有必要函数。例如:

yer! {
    MyOption =>
    let! ...
    let ...
    ret ...
}
yer! 表达式 描述
$your_struct => 将结构体定义为计算表达式函数的提供者。
let! $your_var = $your_expression 使用在宏中定义的最后结构体作为 bind 函数的提供者,并调用 $that_struct::bind($your_expression, &|$your_var| { 下一个代码 }) 表达式。
$your_var 定义变量 $your_var
do! $your_expression 使用在宏中定义的最后结构体作为 bind 函数的提供者,并调用 $that_struct::bind($your_expression, &|_| { 下一个代码 }) 表达式。
do $your_expression 简单地运行 $your_expression
ret! $your_expression 使用在宏中定义的最后结构体作为 ret_from 函数的提供者,并调用 $that_struct::ret_from($your_expression) 表达式。
ret $your_expression 使用在宏中最后定义的结构体作为 ret 函数的提供者,并调用 $that_struct::ret($your_expression) 表达式。
yield $your_expression 使用在宏中最后定义的结构体作为 combineret_yield 函数的提供者,并调用 $that_struct::combine(yer!($that_struct => 下一段代码, $that_struct::ret_yield($your_expression)) 表达式。

示例

即将...

无运行时依赖