Let me get my crotchety old man reaction out of the way: I don't like this.
Now, let's see if it causes trouble for rlang or data.table.
a <- "hello"
a := paste(µ, "world")
a
# [1] "hello world"
library(rlang)
dots_list(a := "dog", !!a := "cat")
# $`a`
# [1] "dog"
#
# $`hello world`
# [1] "cat"
library(data.table)
data.table(x = 1)[, a := x + 2][, c("aa") := a + x][]
# x a aa
# 1: 1 3 4
So far, so good. I've never used rlang myself, so it probably needs more testing for common cases. You could just rename it to %:=% to avoid name overlaps.
Personal opinon below, feel free to ignore
Why I don't like it: non-standard evaluation (substitute, quote, eval, and playing with environments) adds a lot of complexity and chance for silent errors. It should get you something very valuable and not otherwise achievable in return.
A much simpler fix is to use a temporary variable to save keystrokes. It's very similar to what you're doing with µ.
some_long_variable_name <- 3
some_long_variable_name <- {
.. <- some_long_variable_name
.. <- .. +2
}
some_long_variable_name
# [1] 5
This way requires one more instance of some_long_variable_name than yours. But it uses basic R syntax.