Current section
Files
Jump to
Current section
Files
src/shackle_utils.erl
-module(shackle_utils).
-compile(inline).
-compile({inline_size, 512}).
%% public
-export([
ets_options/0,
lookup/3,
random/1,
random_element/1
]).
%% public
-spec ets_options() ->
list().
ets_options() -> [
named_table,
public,
{write_concurrency, true},
{decentralized_counters, true}
].
-spec lookup(atom(), [{atom(), term()}], term()) ->
term().
lookup(Key, List, Default) ->
case lists:keyfind(Key, 1, List) of
false -> Default;
{_, Value} -> Value
end.
-spec random(pos_integer()) ->
non_neg_integer().
random(1) -> 1;
random(N) ->
knot:uniform(N).
-spec random_element([term()]) ->
term().
random_element([X]) ->
X;
random_element([_|_] = List) ->
T = list_to_tuple(List),
element(random(tuple_size(T)), T).