Nim provides default language features by default.

If you want extra functionality or features, you can extend them by reusing modules.

Nim Modules import example

Modules are reusable functionalities that can be reused across all applications.

Let’s see how we can use Inbuilt Nim Modules.

strutils is a string module that contains procedures such as split, length, etc.

First You have to import the module into a code using the import keyword

import std/strutils
import strutils

Here is an example that uses the split procedure, which converts the string into multiple strings delimited by space. Result is sequenced

Here is an example

import std/strutils

let str = "one two three"
var result=str.split(' ')
echo result
echo typeOf(result)


@["one", "two", "three"]

How to create a Custom module and import in Nim code

Sometimes, We want to create a custom code that needs to be reused across multiple modules

Let’s create a simple module ie calculator.nim

  • It contains two procedures
  • add, contains
    • asterisk (*) that tells that importing this file can use procedure name.
  • substract that does not contains asterik(*), this method is not visible during import.
proc add*(values: varargs[int]): int  =
    for value in items(values):
      total += value
proc subtract(value1: int, value2: int): int  =
    return value1 -  value2

Now, Test the calculator.nim module First, import a custom module using the import

  • add method can be used
  • subtract throws an error as it is invisible


import calculator
echo add(1,4,7,9)      # 21
echo subtract(20, 4) # error

Suppose, you have multiple files in a directory and subdirectory as given below

├── calculator
│   ├── add.nim
│   └── subtract.nim
│   └── division.nim
├── shapes
│   └── circle.nim
├── one.nim
└── two.nim
└── three.nim

You can import the files as given below.

import one
import two
import three
import shapes/circle
import calculator / [add, subtract, division]