how about this:
variant 1 // currently legal D; just need to attach semantics
```
// applies to all below
@deps!({import std.stdio; pragma(lib, "curl"); }):
@deps!({import std.range})
void fun(T)(isInputRange!T){} // depends on both deps
void fun2(File file){} // depends on 1st deps ending with ':'
```
variant 2: //currently legal if not ending with ':' as above; less noisy syntax
@deps{import std.stdio; pragma(lib, "curl"); }
@deps{import std.stdio; pragma(lib, "curl"); }: // applies to all below
Advantages:
* no new syntax (just new semantics)
* no nesting inside {}
* allows grouping multiple declarations under a single set of imports
* `grep import` will still work unlike many of the existing proposals
* can use existing traits to query for such imports (eg getSymbolsByUDA)
* allows a more general solution (eg also handles `pragma(lib, "curl");` if we want that as well)