Skip to content

Commit 3726bbc

Browse files
rust.nim new const to define RustPtrType
1 parent e75f850 commit 3726bbc

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

ffi/codegen/rust.nim

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import std/[os, strutils]
55
import ./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+
712
proc 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

2530
proc 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

Comments
 (0)