Skip to content
Chung Leong edited this page Apr 24, 2024 · 5 revisions

The bool type in Zig corresponds exactly to boolean in JavaScript. It's used for storing variables that can be either true or false.

pub fn not(value: bool) bool {
    return !value;
}
import { not } from './bool-example-1.zig';

console.log(not(true));
console.log(not(false));
false
true

In packed struct

A bool typically takes up 1 byte. Within a packed struct it uses only a single bit. This allows you to store a large number of states very efficiently.

pub const UserPreferences = packed struct {
    option1: bool = false,
    option2: bool = false,
    option3: bool = false,
    option4: bool = false,
    option5: bool = false,
    option6: bool = false,
    option7: bool = false,
    option8: bool = false,
    option9: bool = false,
    option10: bool = false,
    option11: bool = false,
    option12: bool = false,
    option13: bool = false,
    option14: bool = false,
    option15: bool = false,
    option16: bool = false,
};
import { UserPreferences } from './bool-example-2.zig';

const pref = new UserPreferences({ option8: true });
console.log(pref.valueOf());
console.log(`size = ${pref.dataView.byteLength}`);
{
  option1: false,
  option2: false,
  option3: false,
  option4: false,
  option5: false,
  option6: false,
  option7: false,
  option8: true,
  option9: false,
  option10: false,
  option11: false,
  option12: false,
  option13: false,
  option14: false,
  option15: false,
  option16: false
}
size = 2
Clone this wiki locally