Git Product home page Git Product logo

wm8731's Introduction

WM8731

A simple HAL for the Cirrus Logic/Wolfson WM8731 audio codec IC.

wm8731's People

Contributors

eric-wood avatar mokomull avatar yruamalairba avatar

Stargazers

 avatar

Watchers

 avatar  avatar

wm8731's Issues

Function types should be generics, not `fn`-literals

If I do something like (awkward naming aside, that's #1):

    #[test]
    fn bypass_button() {
        let user_hit_the_bypass_button = true;

        let result = WM8731::analog_audio_path(|w| {
            if user_hit_the_bypass_button {
                w.bypass().mic()
            } else {
                w.bypass().line_input()
            }
        });

        assert_eq!(result.address, 4);
        assert_eq!(result.value, 0b0000_1000);
    }

the compile fails because a closure that captures (even immutably!) a variable is not an fn type:

error[E0308]: mismatched types
   --> src/lib.rs:203:48
    |
203 |           let result = WM8731::analog_audio_path(|w| {
    |  ________________________________________________^
204 | |             if user_hit_the_bypass_button {
205 | |                 w.bypass().mic()
206 | |             } else {
207 | |                 w.bypass().line_input()
208 | |             }
209 | |         });
    | |_________^ expected fn pointer, found closure
    |
    = note: expected fn pointer `for<'r> fn(&'r mut AnalogAudioPath)`
                  found closure `[closure@src/lib.rs:203:48: 209:10]`

Since FnOnce is the most-permissive function-ey trait, the canonical signature would be pub fn analog_audio_path<F: FnOnce(&mut AnalogAudioPath)>(c: F) -> Register (and so forth for the remaining functions of the WM8731 impl)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.