I noticed the following anomaly:
import std/paths
nim> let path = Path "/dir/root.ext"
nim> echo $path
Error: type mismatch
Expression: $path
[1] path: Path
Expected one of (first mismatch at [position]):
[1] func `$`(x: float | float32): string
[1] func `$`(x`gensym0: `{}`(int, lit)): string
[1] func `$`(x`gensym1: `{}`(uint64, lit)): string
[1] func `$`(x`gensym2: `{}`(int64, lit)): string
[1] proc `$`(s: WideCString): string
[1] proc `$`(s: WideCStringObj): string
[1] proc `$`(s: WideCStringObj; estimate: int; replacement: int = 0x0000FFFD): string
[1] proc `$`(t: typedesc): string
[1] proc `$`(w: WideCString; estimate: int; replacement: int = 0x0000FFFD): string
[1] proc `$`(x: bool): string
[1] proc `$`(x: char): string
[1] proc `$`(x: cstring): string
[1] proc `$`(x: int): string
[1] proc `$`(x: int64): string
[1] proc `$`(x: string): string
[1] proc `$`(x: uint64): string
[1] proc `$`[Enum: enum](x: Enum): string
[1] proc `$`[T, IDX](x: array[IDX, T]): string
[1] proc `$`[T, U](x: HSlice[T, U]): string
[1] proc `$`[T: object](x: T): string
[1] proc `$`[T: tuple](x: T): string
[1] proc `$`[T](x: openArray[T]): string
[1] proc `$`[T](x: seq[T]): string
[1] proc `$`[T](x: set[T]): string
I see that coercing the Path to string works fine:
import std/paths
nim> let p = Path "/dir/name.ext"
echo echo p.string # => /dir/name.ext
or if I define $ myself it works:
import std/paths
let p = Path "/dir/name.ext"
nim> proc `$`(path: Path): string = path.string
nim> echo $p # => /dir/name.ext
Just wondering if $ should be added to std/paths??