---
name: "ck_hs_put_unique"
section: "3"
platform: "linux"
package: "libck-dev"
version: "0.7.2-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ck_hs_put_unique"
---

# ck\_hs\_put\_unique(3)

unconditionally store unique key into a hash set

## NAME

**ck\_hs\_put\_unique** – unconditionally store unique key into a hash set

## LIBRARY

Concurrency Kit (libck, -lck)

## SYNOPSIS

**#include \<ck\_hs.h\>**

*bool*\

**ck\_hs\_put\_unique**(*ck\_hs\_t \*hs*, *unsigned long hash*, *const void \*key*);

## DESCRIPTION

The **ck\_hs\_put\_unique**(*3*) function will store the key specified by the *key* argument in the hash set pointed to by the *hs* argument. The key specified by *key* is expected to have the hash value specified by the *hash* argument (which was previously generated using the [CK\_HS\_HASH(3)](/CK_HS_HASH/3.md) macro).

If the call to **ck\_hs\_put**(*3*) was successful then the key specified by *key* was successfully stored in the hash set pointed to by *hs*. The function will cause undefined behavior if a key with an equivalent value is already present in the hash set. For replacement semantics, please see the [ck\_hs\_set(3)](/ck_hs_set/3.md) function.

## RETURN VALUES

Upon successful completion, **ck\_hs\_put\_unique**(*3*) returns true and otherwise returns false on failure.

## ERRORS

Behavior is undefined if *key* or *hs* are uninitialized. The function will also return false if the hash set could not be enlarged to accomodate key insertion. The function will result in undefined behavior if called for an already inserted key value.

## SEE ALSO

[ck\_hs\_init(3)](/ck_hs_init/3.md), [ck\_hs\_move(3)](/ck_hs_move/3.md), [ck\_hs\_destroy(3)](/ck_hs_destroy/3.md), [CK\_HS\_HASH(3)](/CK_HS_HASH/3.md), [ck\_hs\_iterator\_init(3)](/ck_hs_iterator_init/3.md), [ck\_hs\_next(3)](/ck_hs_next/3.md), [ck\_hs\_get(3)](/ck_hs_get/3.md), [ck\_hs\_put(3)](/ck_hs_put/3.md), [ck\_hs\_set(3)](/ck_hs_set/3.md), [ck\_hs\_fas(3)](/ck_hs_fas/3.md), [ck\_hs\_remove(3)](/ck_hs_remove/3.md), [ck\_hs\_grow(3)](/ck_hs_grow/3.md), [ck\_hs\_rebuild(3)](/ck_hs_rebuild/3.md), [ck\_hs\_gc(3)](/ck_hs_gc/3.md), [ck\_hs\_count(3)](/ck_hs_count/3.md), [ck\_hs\_reset(3)](/ck_hs_reset/3.md), [ck\_hs\_reset\_size(3)](/ck_hs_reset_size/3.md), [ck\_hs\_stat(3)](/ck_hs_stat/3.md)

Additional information available at http://concurrencykit.org/
