How would one achieve conditional compilation with Rust projects that have doctests?

前端 未结 1 1256
庸人自扰
庸人自扰 2021-01-20 13:59

I\'ve used conditional compilation to change the type signature of a function, and now the same doctest can\'t be run for both \"feature\" modes, so I need a way to opt-out

1条回答
  •  余生分开走
    2021-01-20 14:45

    Just write two different sets of documentation and tests and it will all work as-is:

    /// ```
    /// assert_eq!(42, dt::foo());
    /// ```
    #[cfg(not(feature = "alternate"))]
    pub fn foo() -> u8 { 42 }
    
    /// ```
    /// assert_eq!(true, dt::foo());
    /// ```
    #[cfg(feature = "alternate")]
    pub fn foo() -> bool { true }
    
    $ cargo test
       Compiling dt v0.1.0 (file:///private/tmp/dt)
         Running target/debug/dt-c3e297f8592542b5
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
    
       Doc-tests dt
    
    running 1 test
    test foo_0 ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
    
    $ cargo test --features=alternate
       Compiling dt v0.1.0 (file:///private/tmp/dt)
         Running target/debug/dt-c3e297f8592542b5
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
    
       Doc-tests dt
    
    running 1 test
    test foo_0 ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
    

    0 讨论(0)
提交回复
热议问题