diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11a4b9479..567dafac0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -100,17 +100,11 @@ jobs: with: command: build - uses: actions-rs/cargo@v1 - name: std build generic example + name: std build examples if: ${{ matrix.use_std == 'n' }} with: command: build - args: --example generic - - uses: actions-rs/cargo@v1 - name: std build labelled example - if: ${{ matrix.use_std == 'n' }} - with: - command: build - args: --example labelled + args: --examples test: name: Test Suite diff --git a/examples/generic.rs b/examples/generic.rs index 6ee00b140..88025fd5f 100644 --- a/examples/generic.rs +++ b/examples/generic.rs @@ -40,4 +40,18 @@ fn main() { ..p }); assert_eq!(oldest_person.age, 90); + + // mapping over generic representation + let peep = Person { + first_name: "bo", + last_name: "peep", + age: 30, + }; + let generic = frunk::into_generic(peep); + // mapping each one + let _ = generic.map(hlist![ + |first_name| println!("First name: {}", first_name), + |last_name| println!("Last name: {}", last_name), + |age| println!("age: {}", age), + ]); } diff --git a/examples/labelled.rs b/examples/labelled.rs index 346bef6e7..57d67e83b 100644 --- a/examples/labelled.rs +++ b/examples/labelled.rs @@ -100,4 +100,18 @@ fn main() { let external_person: ExternalPerson = internal_person.transmogrify(); println!("{:#?}", external_person); + + // mapping over labelled generic representation + let peep = NewUser { + first_name: "bo", + last_name: "peep", + age: 30, + }; + let labelled_generic = frunk::into_labelled_generic(peep); + + let _ = labelled_generic.map(hlist![ + |f: Field<_, _>| println!("{}: {}", f.name, f.value), + |l: Field<_, _>| println!("{}: {}", l.name, l.value), + |a: Field<_, _>| println!("{}: {}", a.name, a.value), + ]); }