Ephemeron.K1(3) OCaml library Ephemeron.K1(3)

# [NAME](#NAME)

Ephemeron.K1 - Ephemerons with one key.

# [Module](#Module)

Module Ephemeron.K1

# [Documentation](#Documentation)

Module **K1**  
: **sig end**

Ephemerons with one key.

*type* **('k, 'd)** *t*

an ephemeron with one key

*val create* : **unit -&gt; ('k, 'd) t**

**Ephemeron.K1.create ()** creates an ephemeron with one key. The data and the key are empty

*val get\_key* : **('k, 'd) t -&gt; 'k option**

**Ephemeron.K1.get\_key eph** returns **None** if the key of **eph** is empty, **Some x** (where **x** is the key) if it is full.

*val get\_key\_copy* : **('k, 'd) t -&gt; 'k option**

**Ephemeron.K1.get\_key\_copy eph** returns **None** if the key of **eph** is empty, **Some x** (where **x** is a (shallow) copy of the key) if it is full. This function has the same GC friendliness as **Weak.get\_copy**

If the element is a custom block it is not copied.

*val set\_key* : **('k, 'd) t -&gt; 'k -&gt; unit**

**Ephemeron.K1.set\_key eph el** sets the key of **eph** to be a (full) key to **el**

*val unset\_key* : **('k, 'd) t -&gt; unit**

**Ephemeron.K1.unset\_key eph el** sets the key of **eph** to be an empty key. Since there is only one key, the ephemeron starts behaving like a reference on the data.

*val check\_key* : **('k, 'd) t -&gt; bool**

**Ephemeron.K1.check\_key eph** returns **true** if the key of the **eph** is full, **false** if it is empty. Note that even if **Ephemeron.K1.check\_key eph** returns **true** , a subsequent **Ephemeron.K1.get\_key** **eph** can return **None** .

*val blit\_key* : **('k, 'a) t -&gt; ('k, 'b) t -&gt; unit**

**Ephemeron.K1.blit\_key eph1 eph2** sets the key of **eph2** with the key of **eph1** . Contrary to using **Ephemeron.K1.get\_key** followed by **Ephemeron.K1.set\_key** or **Ephemeron.K1.unset\_key** this function does not prevent the incremental GC from erasing the value in its current cycle.

*val get\_data* : **('k, 'd) t -&gt; 'd option**

**Ephemeron.K1.get\_data eph** returns **None** if the data of **eph** is empty, **Some x** (where **x** is the data) if it is full.

*val get\_data\_copy* : **('k, 'd) t -&gt; 'd option**

**Ephemeron.K1.get\_data\_copy eph** returns **None** if the data of **eph** is empty, **Some x** (where **x** is a (shallow) copy of the data) if it is full. This function has the same GC friendliness as **Weak.get\_copy**

If the element is a custom block it is not copied.

*val set\_data* : **('k, 'd) t -&gt; 'd -&gt; unit**

**Ephemeron.K1.set\_data eph el** sets the data of **eph** to be a (full) data to **el**

*val unset\_data* : **('k, 'd) t -&gt; unit**

**Ephemeron.K1.unset\_data eph el** sets the key of **eph** to be an empty key. The ephemeron starts behaving like a weak pointer.

*val check\_data* : **('k, 'd) t -&gt; bool**

**Ephemeron.K1.check\_data eph** returns **true** if the data of the **eph** is full, **false** if it is empty. Note that even if **Ephemeron.K1.check\_data eph** returns **true** , a subsequent **Ephemeron.K1.get\_data** **eph** can return **None** .

*val blit\_data* : **('a, 'd) t -&gt; ('b, 'd) t -&gt; unit**

**Ephemeron.K1.blit\_data eph1 eph2** sets the data of **eph2** with the data of **eph1** . Contrary to using **Ephemeron.K1.get\_data** followed by **Ephemeron.K1.set\_data** or **Ephemeron.K1.unset\_data** this function does not prevent the incremental GC from erasing the value in its current cycle.

*val make* : **'k -&gt; 'd -&gt; ('k, 'd) t**

**Ephemeron.K1.make k d** creates an ephemeron with key **k** and data **d** .

*val query* : **('k, 'd) t -&gt; 'k -&gt; 'd option**

**Ephemeron.K1.query eph key** returns **Some x** (where **x** is the ephemeron's data) if **key** is physically equal to **eph** 's key, and **None** if **eph** is empty or **key** is not equal to **eph** 's key.

*module Make :* **functor (H : Hashtbl.HashedType) -&gt; sig end**

Functor building an implementation of a weak hash table

*module MakeSeeded :* **functor (H : Hashtbl.SeededHashedType) -&gt; sig end**

Functor building an implementation of a weak hash table. The seed is similar to the one of **Hashtbl.MakeSeeded** .

*module Bucket :* **sig end**

2026-10-27 OCamldoc

---

Document: Ephemeron.K1(3o) from ocaml-4 4.14.4-r4 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
