

/// Assigns only when `rhs` is non-`nil`..
/// - Remark: effectively `lhs = rhs ?? lhs` _(skipping same-value assignments)_
public func =??<Wrapped>(lhs:inout Wrapped, rhsClosure:@autoclosure ()throws->Wrapped?) rethrows {
	let rhs:Wrapped? = try rhsClosure()
	if rhs != nil {
		lhs = rhs!
	}
}

/// Assigns only when `rhs` is non-`nil`.
/// - Remark: effectively `lhs = (rhs ?? lhs) ?? nil` _(skipping same-value assignments)_
public func =??<Wrapped>(lhs:inout Wrapped?, rhsClosure:@autoclosure ()throws->Wrapped?) rethrows {