Skip to content

Add the ability to do #[cfg(...)] { ... } at the top level of a file. #47712

Closed
@vext01

Description

@vext01

Occasionally I find I need to conditionally use several libraries. For example, to import data structures used in a conditionally compiled function.

#[cfg(debug_assertions)]    
use std::slice;    
#[cfg(debug_assertions)]    
use std::fs::File;    
#[cfg(debug_assertions)]    
use std::io::prelude::*;    
#[cfg(debug_assertions)]    
use std::convert::AsRef;    
#[cfg(debug_assertions)]    
use std::path::Path;    

Whereas, I'd like to write:

#[cfg(debug_assertions)] {
    use std::slice;
    use std::fs::File;    
    use std::io::prelude::*;    
    use std::convert::AsRef;    
    use std::path::Path;
}

This currently gives:

error: expected item after attributes
  --> src/lib.rs:53:24
   |
53 | #[cfg(debug_assertions)] {

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-feature-requestCategory: A feature request, i.e: not implemented / a PR.T-langRelevant to the language team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions