Hi folks, while trying to make some features optional (eg. bluetooth, vr, ...) I've seen several of the types I'd like to get rid of in new() calls. Rust doesn't seem to support #[cfg()] on function parameters. OTOH, this works on struct fields.
Just using Option<> here doesn't help as I'd like to completely get rid of everything from the disabled features. Therefore I propose using structs as parameters, where fields certain fields are only available when certain features are enabled. For example in window.rs: > pub struct Window_Param { > #[cfg(feature = "webapi-bluetooth")] > bluetooth_thread: IpcSender<BluetoothRequest>, > #[cfg(feature = "webapi-webgl")] > webgl_chan: WebGLChan, > #[cfg(feature = "webapi-webvr")] > webvr_chan: Option<IpcSender<WebVRMsg>>, > ... > } Window::new() would now have an additional Window_Param parameter instead of the explicit parameters for bluetooth_thread, webgl_chan, webvr_chan, ... Maybe we could also move some feature-dependent logic (that operate on these fields) there, to reduce the amount of #[cfg...] places. What's you oppinion on that ? --mtx -- Enrico Weigelt, metux IT consult Free software and Linux embedded engineering i...@metux.net -- +49-151-27565287 _______________________________________________ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-servo