[{"data":1,"prerenderedAt":714},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Finstallation":151,"\u002Fgetting-started\u002Finstallation-surround":709},[4,29,56,79,94,121,128,144],{"title":5,"path":6,"stem":7,"children":8,"icon":27,"defaultOpen":28},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-book-open",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Redis setup","\u002Fgetting-started\u002Fredis-setup","1.getting-started\u002F3.redis-setup","i-lucide-database",{"title":23,"path":24,"stem":25,"icon":26},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F4.quickstart","i-lucide-zap","i-lucide-rocket",true,{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":55},"Concepts","i-lucide-lightbulb","\u002Fconcepts","2.concepts",[35,40,45,50],{"title":36,"path":37,"stem":38,"icon":39},"Keys","\u002Fconcepts\u002Fkeys","2.concepts\u002F1.keys","i-lucide-key-round",{"title":41,"path":42,"stem":43,"icon":44},"Strict vs lax","\u002Fconcepts\u002Fstrict-vs-lax","2.concepts\u002F2.strict-vs-lax","i-lucide-scale",{"title":46,"path":47,"stem":48,"icon":49},"Comparators","\u002Fconcepts\u002Fcomparators","2.concepts\u002F3.comparators","i-lucide-git-compare",{"title":51,"path":52,"stem":53,"icon":54},"Errors","\u002Fconcepts\u002Ferrors","2.concepts\u002F4.errors","i-lucide-triangle-alert",false,{"title":57,"path":58,"stem":59,"children":60,"icon":63},"Counters","\u002Fcounters","3.counters\u002F1.index",[61,64,69,74],{"title":62,"path":58,"stem":59,"icon":63},"Overview","i-lucide-hash",{"title":65,"path":66,"stem":67,"icon":68},"StrictCounter","\u002Fcounters\u002Fstrict-counter","3.counters\u002F2.strict-counter","i-lucide-target",{"title":70,"path":71,"stem":72,"icon":73},"LaxCounter","\u002Fcounters\u002Flax-counter","3.counters\u002F3.lax-counter","i-lucide-wind",{"title":75,"path":76,"stem":77,"icon":78},"Conditional & batch operations","\u002Fcounters\u002Fconditional-and-batch","3.counters\u002F4.conditional-and-batch","i-lucide-layers",{"title":80,"path":81,"stem":82,"children":83,"icon":85},"Instance-aware counters","\u002Finstance-aware-counters","4.instance-aware-counters\u002F1.index",[84,86,90],{"title":62,"path":81,"stem":82,"icon":85},"i-lucide-network",{"title":87,"path":88,"stem":89,"icon":68},"StrictInstanceAwareCounter","\u002Finstance-aware-counters\u002Fstrict","4.instance-aware-counters\u002F2.strict",{"title":91,"path":92,"stem":93,"icon":73},"LaxInstanceAwareCounter","\u002Finstance-aware-counters\u002Flax","4.instance-aware-counters\u002F3.lax",{"title":95,"path":96,"stem":97,"children":98,"icon":100},"Locks","\u002Flocks","5.locks\u002F1.index",[99,101,106,111,116],{"title":62,"path":96,"stem":97,"icon":100},"i-lucide-lock",{"title":102,"path":103,"stem":104,"icon":105},"Mutex","\u002Flocks\u002Fmutex","5.locks\u002F2.mutex","i-lucide-lock-keyhole",{"title":107,"path":108,"stem":109,"icon":110},"RwLock","\u002Flocks\u002Frwlock","5.locks\u002F3.rwlock","i-lucide-book-lock",{"title":112,"path":113,"stem":114,"icon":115},"Lock options","\u002Flocks\u002Foptions","5.locks\u002F4.options","i-lucide-sliders-horizontal",{"title":117,"path":118,"stem":119,"icon":120},"Guard state & errors","\u002Flocks\u002Fguard-state","5.locks\u002F5.guard-state","i-lucide-shield-alert",{"title":122,"path":123,"stem":124,"children":125,"icon":127},"Rate limiting","\u002Frate-limiting","6.rate-limiting\u002F1.index",[126],{"title":122,"path":123,"stem":124,"icon":127},"i-lucide-gauge",{"title":129,"icon":130,"path":131,"stem":132,"children":133,"page":55},"Reference","i-lucide-book-marked","\u002Freference","7.reference",[134,139],{"title":135,"path":136,"stem":137,"icon":138},"Feature flags","\u002Freference\u002Ffeature-flags","7.reference\u002F1.feature-flags","i-lucide-flag",{"title":140,"path":141,"stem":142,"icon":143},"API reference","\u002Freference\u002Fapi","7.reference\u002F2.api","i-lucide-file-code",{"title":145,"path":146,"stem":147,"children":148,"icon":150},"Changelog","\u002Fchangelog","8.changelog\u002F1.index",[149],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-scroll",{"id":152,"title":13,"badge":153,"body":154,"date":153,"description":703,"extension":704,"links":153,"meta":705,"navigation":706,"path":14,"seo":707,"stem":15,"__hash__":708},"docs\u002F1.getting-started\u002F2.installation.md",null,{"type":155,"value":156,"toc":696},"minimark",[157,161,187,194,233,241,245,248,356,359,432,435,484,488,499,612,616,660,664,676,680,692],[158,159,160],"p",{},"Add the crate with Cargo:",[162,163,168],"pre",{"className":164,"code":165,"language":166,"meta":167,"style":167},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","cargo add distkit\n","bash","",[169,170,171],"code",{"__ignoreMap":167},[172,173,176,180,184],"span",{"class":174,"line":175},"line",1,[172,177,179],{"class":178},"sbgvK","cargo",[172,181,183],{"class":182},"s_sjI"," add",[172,185,186],{"class":182}," distkit\n",[158,188,189,190,193],{},"Or pin it in ",[169,191,192],{},"Cargo.toml",":",[162,195,199],{"className":196,"code":197,"language":198,"meta":167,"style":167},"language-toml shiki shiki-themes material-theme-lighter github-light github-dark","[dependencies]\ndistkit = \"0.5\"\n","toml",[169,200,201,213],{"__ignoreMap":167},[172,202,203,207,210],{"class":174,"line":175},[172,204,206],{"class":205},"sP7_E","[",[172,208,209],{"class":178},"dependencies",[172,211,212],{"class":205},"]\n",[172,214,216,220,223,227,230],{"class":174,"line":215},2,[172,217,219],{"class":218},"su5hD","distkit ",[172,221,222],{"class":205},"=",[172,224,226],{"class":225},"sjJ54"," \"",[172,228,229],{"class":182},"0.5",[172,231,232],{"class":225},"\"\n",[158,234,235,236,240],{},"This gives you the default features: the ",[237,238,239],"strong",{},"strict and lax counters",". Everything else is opt-in.",[242,243,135],"h2",{"id":244},"feature-flags",[158,246,247],{},"distkit keeps its dependency surface small by gating each primitive behind a feature. Enable what you use.",[249,250,251,267],"table",{},[252,253,254],"thead",{},[255,256,257,261,264],"tr",{},[258,259,260],"th",{},"Feature",[258,262,263],{},"Default",[258,265,266],{},"What it adds",[268,269,270,292,309,325,344],"tbody",{},[255,271,272,278,283],{},[273,274,275],"td",{},[169,276,277],{},"counter",[273,279,280],{},[237,281,282],{},"yes",[273,284,285,286,288,289,291],{},"Distributed counters (",[169,287,65],{},", ",[169,290,70],{},")",[255,293,294,299,302],{},[273,295,296],{},[169,297,298],{},"instance-aware-counter",[273,300,301],{},"no",[273,303,304,305,288,307,291],{},"Per-instance counters (",[169,306,87],{},[169,308,91],{},[255,310,311,316,318],{},[273,312,313],{},[169,314,315],{},"lock",[273,317,301],{},[273,319,320,321,288,323,291],{},"Distributed locks (",[169,322,102],{},[169,324,107],{},[255,326,327,332,334],{},[273,328,329],{},[169,330,331],{},"trypema",[273,333,301],{},[273,335,336,337,343],{},"Rate limiting via the ",[338,339,331],"a",{"href":340,"rel":341},"https:\u002F\u002Fdocs.rs\u002Ftrypema",[342],"nofollow"," crate",[255,345,346,351,353],{},[273,347,348],{},[169,349,350],{},"full",[273,352,301],{},[273,354,355],{},"Everything above",[158,357,358],{},"To enable instance-aware counters, locks, and rate limiting:",[162,360,362],{"className":196,"code":361,"language":198,"meta":167,"style":167},"[dependencies]\ndistkit = { version = \"0.5\", features = [\"instance-aware-counter\", \"lock\", \"trypema\"] }\n",[169,363,364,372],{"__ignoreMap":167},[172,365,366,368,370],{"class":174,"line":175},[172,367,206],{"class":205},[172,369,209],{"class":178},[172,371,212],{"class":205},[172,373,374,376,378,381,384,386,388,390,393,396,399,401,404,406,408,410,412,414,416,418,420,422,424,426,429],{"class":174,"line":215},[172,375,219],{"class":218},[172,377,222],{"class":205},[172,379,380],{"class":205}," {",[172,382,383],{"class":218}," version ",[172,385,222],{"class":205},[172,387,226],{"class":225},[172,389,229],{"class":182},[172,391,392],{"class":225},"\"",[172,394,395],{"class":205},",",[172,397,398],{"class":218}," features ",[172,400,222],{"class":205},[172,402,403],{"class":205}," [",[172,405,392],{"class":225},[172,407,298],{"class":182},[172,409,392],{"class":225},[172,411,395],{"class":205},[172,413,226],{"class":225},[172,415,315],{"class":182},[172,417,392],{"class":225},[172,419,395],{"class":205},[172,421,226],{"class":225},[172,423,331],{"class":182},[172,425,392],{"class":225},[172,427,428],{"class":205},"]",[172,430,431],{"class":205}," }\n",[158,433,434],{},"Or just turn everything on:",[162,436,438],{"className":196,"code":437,"language":198,"meta":167,"style":167},"[dependencies]\ndistkit = { version = \"0.5\", features = [\"full\"] }\n",[169,439,440,448],{"__ignoreMap":167},[172,441,442,444,446],{"class":174,"line":175},[172,443,206],{"class":205},[172,445,209],{"class":178},[172,447,212],{"class":205},[172,449,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482],{"class":174,"line":215},[172,451,219],{"class":218},[172,453,222],{"class":205},[172,455,380],{"class":205},[172,457,383],{"class":218},[172,459,222],{"class":205},[172,461,226],{"class":225},[172,463,229],{"class":182},[172,465,392],{"class":225},[172,467,395],{"class":205},[172,469,398],{"class":218},[172,471,222],{"class":205},[172,473,403],{"class":205},[172,475,392],{"class":225},[172,477,350],{"class":182},[172,479,392],{"class":225},[172,481,428],{"class":205},[172,483,431],{"class":205},[242,485,487],{"id":486},"you-also-need-redis-and-a-client","You also need Redis and a client",[158,489,490,491,494,495,498],{},"Every primitive talks to Redis through a ",[169,492,493],{},"redis::aio::ConnectionManager",", so you need the ",[169,496,497],{},"redis"," crate and Tokio alongside distkit:",[162,500,502],{"className":196,"code":501,"language":198,"meta":167,"style":167},"[dependencies]\ndistkit = \"0.5\"\nredis = { version = \"0.27\", features = [\"tokio-comp\", \"connection-manager\"] }\ntokio = { version = \"1\", features = [\"full\"] }\n",[169,503,504,512,524,573],{"__ignoreMap":167},[172,505,506,508,510],{"class":174,"line":175},[172,507,206],{"class":205},[172,509,209],{"class":178},[172,511,212],{"class":205},[172,513,514,516,518,520,522],{"class":174,"line":215},[172,515,219],{"class":218},[172,517,222],{"class":205},[172,519,226],{"class":225},[172,521,229],{"class":182},[172,523,232],{"class":225},[172,525,527,530,532,534,536,538,540,543,545,547,549,551,553,555,558,560,562,564,567,569,571],{"class":174,"line":526},3,[172,528,529],{"class":218},"redis ",[172,531,222],{"class":205},[172,533,380],{"class":205},[172,535,383],{"class":218},[172,537,222],{"class":205},[172,539,226],{"class":225},[172,541,542],{"class":182},"0.27",[172,544,392],{"class":225},[172,546,395],{"class":205},[172,548,398],{"class":218},[172,550,222],{"class":205},[172,552,403],{"class":205},[172,554,392],{"class":225},[172,556,557],{"class":182},"tokio-comp",[172,559,392],{"class":225},[172,561,395],{"class":205},[172,563,226],{"class":225},[172,565,566],{"class":182},"connection-manager",[172,568,392],{"class":225},[172,570,428],{"class":205},[172,572,431],{"class":205},[172,574,576,579,581,583,585,587,589,592,594,596,598,600,602,604,606,608,610],{"class":174,"line":575},4,[172,577,578],{"class":218},"tokio ",[172,580,222],{"class":205},[172,582,380],{"class":205},[172,584,383],{"class":218},[172,586,222],{"class":205},[172,588,226],{"class":225},[172,590,591],{"class":182},"1",[172,593,392],{"class":225},[172,595,395],{"class":205},[172,597,398],{"class":218},[172,599,222],{"class":205},[172,601,403],{"class":205},[172,603,392],{"class":225},[172,605,350],{"class":182},[172,607,392],{"class":225},[172,609,428],{"class":205},[172,611,431],{"class":205},[242,613,615],{"id":614},"requirements","Requirements",[249,617,618,628],{},[252,619,620],{},[255,621,622,625],{},[258,623,624],{},"Requirement",[258,626,627],{},"Version",[268,629,630,638,649],{},[255,631,632,635],{},[273,633,634],{},"Rust edition",[273,636,637],{},"2024",[255,639,640,643],{},[273,641,642],{},"Redis",[273,644,645,648],{},[169,646,647],{},"5.0+"," (Lua scripts)",[255,650,651,654],{},[273,652,653],{},"Runtime",[273,655,656,657],{},"Tokio ",[169,658,659],{},"1.x",[242,661,663],{"id":662},"verify","Verify",[162,665,667],{"className":164,"code":666,"language":166,"meta":167,"style":167},"cargo check\n",[169,668,669],{"__ignoreMap":167},[172,670,671,673],{"class":174,"line":175},[172,672,179],{"class":178},[172,674,675],{"class":182}," check\n",[242,677,679],{"id":678},"next-steps","Next steps",[681,682,683,688],"ul",{},[684,685,686],"li",{},[338,687,18],{"href":19},[684,689,690],{},[338,691,23],{"href":24},[693,694,695],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":167,"searchDepth":175,"depth":215,"links":697},[698,699,700,701,702],{"id":244,"depth":215,"text":135},{"id":486,"depth":215,"text":487},{"id":614,"depth":215,"text":615},{"id":662,"depth":215,"text":663},{"id":678,"depth":215,"text":679},"Add distkit and turn on only the primitives you need with feature flags.","md",{},{"icon":16},{"title":13,"description":703},"ctFSJvA_6C7bhYOUopHteCnNpn1eCtFH-6BSLYLZbMs",[710,712],{"title":10,"path":6,"stem":7,"description":711,"icon":11,"children":-1},"What distkit is, what it gives you, and the guarantees it makes.",{"title":18,"path":19,"stem":20,"description":713,"icon":21,"children":-1},"Build a Redis connection manager that your distkit primitives can share.",1781569582557]