tailscale/types
Joe Tsai c9188d7760
types/bools: add IfElse (#14272)
The IfElse function is equivalent to the ternary (c ? a : b) operator
in many other languages like C. Unfortunately, this function
cannot perform short-circuit evaluation like in many other languages,
but this is a restriction that's not much different
than the pre-existing cmp.Or function.

The argument against ternary operators in Go is that
nested ternary operators become unreadable
(e.g., (c1 ? (c2 ? a : b) : (c2 ? x : y))).
But a single layer of ternary expressions can sometimes
make code much more readable.

Having the bools.IfElse function gives code authors the
ability to decide whether use of this is more readable or not.
Obviously, code authors will need to be judicious about
their use of this helper function.
Readability is more of an art than a science.

Updates #cleanup

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2024-12-11 10:55:33 -08:00
..
appctype appc,ipn/ipnlocal,types/appctype: implement control provided routes 2024-01-17 14:40:09 -08:00
bools types/bools: add IfElse (#14272) 2024-12-11 10:55:33 -08:00
dnstype cli: add tailscale dns query (#13368) 2024-09-24 20:18:45 +00:00
empty all: update copyright and license headers 2023-01-27 15:36:29 -08:00
flagtype all: update copyright and license headers 2023-01-27 15:36:29 -08:00
iox types/iox: add function types for Reader and Writer (#14366) 2024-12-11 10:55:21 -08:00
ipproto all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
key types/key: use tlpub: in error message (#13707) 2024-10-07 17:28:45 +01:00
lazy types/lazy: add DeferredInit type 2024-10-07 15:43:22 -05:00
logger all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
logid types/logid: add Add method (#12478) 2024-06-17 16:03:44 -07:00
netlogtype all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netmap all: use iterators over slice views more 2024-11-11 13:22:34 -08:00
nettype wgengine/magicsock, types/nettype, etc: finish ReadFromUDPAddrPort netip migration 2023-04-15 13:40:15 -07:00
opt util/syspolicy/setting: make setting.RawItem JSON-marshallable 2024-10-30 12:50:29 -05:00
persist types/persist: remove unused field Persist.Provider 2024-04-21 10:48:25 -07:00
prefs types/prefs: add a package containing generic preference types 2024-08-21 12:44:38 -05:00
preftype cmd/tailscaled,*: add start of configuration file support 2023-10-16 10:40:27 -07:00
ptr all: update copyright and license headers 2023-01-27 15:36:29 -08:00
result types/result, util/lineiter: add package for a result type, use it 2024-11-05 10:27:52 -08:00
structs all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tkatype types/tkatype: add test for MarshaledSignature's JSON format 2023-08-19 19:34:18 -07:00
views types/views: add iterators to the three Map view types 2024-10-09 10:00:29 -07:00