44import std/ [os, strutils]
55import ./ meta
66
7+ # # Wire-format Rust type used for any Nim `ptr T` / `pointer`. Fixed 64-bit so
8+ # # the CBOR payload size is stable regardless of host architecture (mirrors
9+ # # CppPtrType in cpp.nim).
10+ const RustPtrType * = " u64"
11+
712proc nimTypeToRust * (typeName: string ): string =
813 # # Maps Nim type names to Rust type names, including generics.
914 let t = typeName.strip ()
@@ -19,7 +24,7 @@ proc nimTypeToRust*(typeName: string): string =
1924 of " int32" : " i32"
2025 of " bool" : " bool"
2126 of " float" , " float64" : " f64"
22- of " pointer" : " u64 "
27+ of " pointer" : RustPtrType
2328 else : capitalizeFirstLetter (t)
2429
2530proc deriveLibName * (procs: seq [FFIProcMeta ]): string =
@@ -224,7 +229,7 @@ proc generateTypesRs*(
224229 for ep in p.extraParams:
225230 let snake = camelToSnakeCase (ep.name)
226231 let rustType =
227- if ep.isPtr: " u64 "
232+ if ep.isPtr: RustPtrType
228233 else : nimTypeToRust (ep.typeName)
229234 if snake != ep.name:
230235 lines.add (" #[serde(rename = \" $1\" )]" % [ep.name])
@@ -417,7 +422,7 @@ proc generateApiRs*(procs: seq[FFIProcMeta], libName: string): string =
417422 for ep in ctor.extraParams:
418423 let snake = camelToSnakeCase (ep.name)
419424 let rustType =
420- if ep.isPtr: " u64 "
425+ if ep.isPtr: RustPtrType
421426 else : nimTypeToRust (ep.typeName)
422427 paramsList.add (" $1: $2" % [snake, rustType])
423428 fieldInits.add (snake)
@@ -470,7 +475,7 @@ proc generateApiRs*(procs: seq[FFIProcMeta], libName: string): string =
470475 for ep in m.extraParams:
471476 let snake = camelToSnakeCase (ep.name)
472477 let rustType =
473- if ep.isPtr: " u64 "
478+ if ep.isPtr: RustPtrType
474479 else : nimTypeToRust (ep.typeName)
475480 paramsList.add (" $1: $2" % [snake, rustType])
476481 fieldInits.add (snake)
@@ -483,7 +488,7 @@ proc generateApiRs*(procs: seq[FFIProcMeta], libName: string): string =
483488 reqName & " {}"
484489
485490 let retTypeForApi =
486- if m.returnIsPtr: " u64 "
491+ if m.returnIsPtr: RustPtrType
487492 else : retRustType
488493
489494 # -- blocking method --
0 commit comments