anchor.diff:              Fable.Path.Combine(currentDir, path)
               |> Fable.Path.normalizeFullPath
   
  -    let transformImports com ctx (imports: string seq): Rust.Item list =
  +    let transformImports (com: IRustCompiler) ctx (imports: (string * string) seq): Rust.Item list =
           imports
           |> List.ofSeq
           |> List.sort
  -        |> List.collect (fun (importPath: string) ->
  -            let fullPath = getImportFullPath com importPath
  -            let modName = System.String.Format("import_{0:x}", hash fullPath)
  +        |> List.collect (fun (importPath, modName) ->
  +            // let fullPath = getImportFullPath com importPath
  +            // let modName = System.String.Format("import_{0:x}", hash fullPath)
               let attrs = [mkEqAttr "path" ("\"" + importPath  + "\"")]
               let modItem = mkUnloadedModItem attrs modName |> mkNonPublicItem
               let useItem = mkGlobUseItem [] [modName] |> mkNonPublicItem
  
positive.code: module Compiler =
  
      // global storage (across files)
      let importPaths = HashSet<string>()
  
      // per file
      type RustCompiler (com: Fable.Compiler) =
          let onlyOnceWarnings = HashSet<string>()
          let imports = HashSet<string>()
          let interfaces = System.Collections.Generic.Dictionary<string, string>()
  
          interface IRustCompiler with
  
negative.code:                 if onlyOnceWarnings.Add(msg) then
                      addWarning com [] range msg
  
              member _.TryAddImport(modName) =
                  importModules.Add(modName)
  
              member self.GetImportName(ctx, selector, path, r) =
                  let importPath, importName =
                      match path.Split('|') with
                      | [| path; namesp |] ->
  