summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/02-sum/output/rust/src/shapes.rs10
-rw-r--r--examples/03-inductive-data-types/output/rust/src/arithmetic.rs10
-rw-r--r--examples/03-inductive-data-types/output/rust/src/main.rs14
3 files changed, 27 insertions, 7 deletions
diff --git a/examples/02-sum/output/rust/src/shapes.rs b/examples/02-sum/output/rust/src/shapes.rs
index 958db0a..31c3db9 100644
--- a/examples/02-sum/output/rust/src/shapes.rs
+++ b/examples/02-sum/output/rust/src/shapes.rs
@@ -6,6 +6,16 @@ pub enum Shape {
Triangle(crate::shapes::Triangle),
}
+impl Shape {
+ pub fn rectangle(value: crate::shapes::Rectangle) -> Self {
+ Self::Rectangle(value)
+ }
+
+ pub fn triangle(value: crate::shapes::Triangle) -> Self {
+ Self::Triangle(value)
+ }
+}
+
pub struct Rectangle {
pub width: ::core::primitive::i32,
pub height: ::core::primitive::i32,
diff --git a/examples/03-inductive-data-types/output/rust/src/arithmetic.rs b/examples/03-inductive-data-types/output/rust/src/arithmetic.rs
index a9679dc..d6944a9 100644
--- a/examples/03-inductive-data-types/output/rust/src/arithmetic.rs
+++ b/examples/03-inductive-data-types/output/rust/src/arithmetic.rs
@@ -5,6 +5,16 @@ pub enum Expression {
Const(crate::arithmetic::Const),
}
+impl Expression {
+ pub fn add(value: crate::arithmetic::Add) -> Self {
+ Self::Add(::std::boxed::Box::new(value))
+ }
+
+ pub fn r#const(value: crate::arithmetic::Const) -> Self {
+ Self::Const(value)
+ }
+}
+
pub struct Add {
pub left: crate::arithmetic::Expression,
pub right: crate::arithmetic::Expression,
diff --git a/examples/03-inductive-data-types/output/rust/src/main.rs b/examples/03-inductive-data-types/output/rust/src/main.rs
index 8c1f750..28f7cec 100644
--- a/examples/03-inductive-data-types/output/rust/src/main.rs
+++ b/examples/03-inductive-data-types/output/rust/src/main.rs
@@ -3,11 +3,11 @@ mod arithmetic;
use arithmetic::{Add, Const, Expression};
fn main() {
- let expression = Expression::Add(Box::new(Add {
- left: Expression::Add(Box::new(Add {
- left: Expression::Const(Const { value: 42 }),
- right: Expression::Const(Const { value: 47 }),
- })),
- right: Expression::Const(Const { value: 52 }),
- }));
+ let expression = Expression::add(Add {
+ left: Expression::add(Add {
+ left: Expression::r#const(Const { value: 42 }),
+ right: Expression::r#const(Const { value: 47 }),
+ }),
+ right: Expression::r#const(Const { value: 52 }),
+ });
}