Changed `*mut ...` to `Option<NonNull<...>>`

Instead of a raw pointer use a combination of Option and NonNull which
is exactly the same size as a raw pointer, expect you cannot access a
nullpointer by accident.
The assembly is completly identical on the hot path (the one that does not
procude a panic). Only one move more on the cold path (because of the
unwrap message (?).
7 jobs from master in 45 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
failed #7446
build

00:00:45

 
  Test
skipped #7448
allowed to fail
code_quality
skipped #7452
allowed to fail
container_scanning
skipped #7451
allowed to fail
dependency_scanning
skipped #7449
allowed to fail
license_management
skipped #7450
allowed to fail
sast
skipped #7447
test
 
Name Stage Failure
failed
build Build
Checking out 6ac4f576 as master...
Skipping Git submodules setup
$ # Auto DevOps variables and functions # collapsed multi-line command
$ setup_docker
$ build
Logging to GitLab Container Registry with CI credentials...
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
ERROR: Job failed: exit code 1