I get where you're coming from. But there is something to be said about being
pragma-tic (heh). Rust (admittedly, not exactly a model citizen in terms of
syntactic choices) has suffix types, and attribute and derive macros have been
a part of the language basically from the beginning. It's just easier to tell
what's what.
This:
proc tryInsertID*(db: TDbConn, query: TSqlQuery,
args: varargs[string, `$`]): int64
{.tags: [FWriteDb], raises: [].} =
## executes the query (typically "INSERT") and returns the
## generated ID for the row or -1 in case of an error.
...
Run
is a far cry from this in readability terms:
+[tags: [FWriteDb], raises: []]
proc tryInsertID*(db: TDbConn, query: TSqlQuery,
args: varargs[string, `$`]): int64 =
## executes the query (typically "INSERT") and returns the
## generated ID for the row or -1 in case of an error.
...
Run